发表主题 回复主题
  • 528阅读
  • 0回复

[教程]Percona Server 安装 TokuDB

级别: 论坛版主
发帖
9060
云币
12561
— 本帖被 不靠谱贝贝 设置为精华(2017-03-31) —
前言 ?A_+G 5  
I"x|U[*B  
TokuDB 是非常有效的数据库引擎,在阿里、腾讯均有广泛的运用,MySQL 的变种 Percona Server 和 AliSQL 均推荐启用 TokuDB 并作为默认引擎。其以优异的压缩性能和储存表现,被广泛的应用,颇有代替 InnoDB 之势。 Mx`';z8~  
c$L1aZo  
?wCX:? g  
如果使用 RDS 使用 TokuDB 请看:[font=微软雅黑, &amp]阿里云 RDS 开启 TokuDB 引擎 =>tkc/aa  
-PGxG 8S  
介绍 &z:bZH]DH  
/2c(6h  
TokuDB 是一个支持事务的“新”引擎,有着出色的数据压缩功能,由美国 TokuTek 公司(现在已经被 Percona 公司收购)研发。拥有出色的数据压缩功能,如果您的数据写多读少,而且数据量比较大,强烈建议您使用TokuDB,以节省空间成本,并大幅度降低存储使用量和IOPS开销,不过相应的会增加 CPU 的压力。 SJMbYjn0J  
a`#lYM%(>  
7Re\*[)T  
注意:(哈哈,上一篇用过,继续复制,蛤)
 ~yw]<{?  
*?HoN;^  
Ddg!1SF  
1. TokuDB引擎 不支持外键(foreign key)功能,如果您的表有外键,切换到 TokuDB引擎 后,此约束将被忽略。 如果数据库过分依赖外键的话,个人建议要有壮士断腕的决心,早点处理掉,不过数据库业务也会外键缩连累的! ) 5$?e  

2. TokuDB 不适用于大量读取的场景 'ROz|iJ  
~wv$uL8y  
设置 "G.X=, V  
g)r{LxT#+  
这里以 Percona Server 的二进制包为例,源码编译方式下次写。 \gPMYMd  
OW\vbWX  
RHEL、Centos 安装 Percona Bl8|`R^g  
  1. yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm -y
  2. yum install Percona-Server-server-57 -y
  3. systemctl start mysql.service #启动 Percona
  4. systemctl enable mysql.service #设置开机启动
B>!mD{N  
Xo~q}(ze^  
查看安装是临时生成的密码:cat /var/log/mysqld.log | grep "temporary password" w?|qKO  
g H'hA'  
Debian、Ubuntu 安装 Percona ([>__c/Nd  
{4Kvr4)4  
  1. wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb
  2. dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb
  3. rm -rf /etc/apt/percona-release.list
  4. cat >> /etc/apt/percona-release.list <<EOF
  5. deb https://mirror.tuna.tsinghua.edu.cn/percona/apt jessie main
  6. EOF
  7. apt-get update
  8. apt-get install percona-server-server-5.7 -y
  9. service mysql start #启动 Percona
2(l0Lq*  
OQKg/1  
5 D^#6h 4  
进行安全设置  .nrbd#i-  
[w@S/K[_|  
  1. mysql_secure_installation # 进行安全设置,除了重置密码其他全部 y 即可
  2. Enter current password for root (enter for none):
  3. 解释:输入当前 root 用户密码,输入上面的 root 临时面膜。
  4. Set root password? [Y/n]  y
  5. 解释:要设置 root 密码吗?输入 y 表示愿意。
  6. Remove anonymous users? [Y/n]  y
  7. 解释:要移除掉匿名用户吗?输入 y 表示愿意。
  8. Disallow root login remotely? [Y/n]  y
  9. 解释:不想让 root 远程登陆吗?输入 y 表示愿意。
  10. Remove test database and access to it? [Y/n]  y
  11. 解释:要去掉 test 数据库吗?输入 y 表示愿意。
  12. Reload privilege tables now? [Y/n]  y
  13. 解释:想要重新加载权限吗?输入 y 表示愿意。
wLqj<ot  
Ti_G  
}s<;YC  
设置 jemalloc 3I~.'>Pd  
$9Bzq_!  
$o5i15Oy.  
jemalloc 是一个很好的内存管理软件,目前普遍应用于数据库类软件,性能表现普遍好于 glibc 的 maloc,例如 MSSQL、Redis 都是默认使用 jemalloc 作为内存管理软件。开启 TokuDB 必须依赖 jemalloc。 b5^>QzgD  
~B"HI+:\L  
REHL、CentOS 安装: xp95KxHHo  
}kvix{  
  1. [font=Arial]yum install epel-release # 已经安装的直接跳过即可[/font]
  2. [font=Arial]yum install jemalloc -y[/font]
Er j{_i?R?  
qwj7CIc(  
l~]] RgU  
启用 jemalloc 优化 $Uy+]9  
修改 /etc/percona-server.conf.d/mysqld_safe.cnf 添加 malloc-lib = /usr/lib64/libjemalloc.so.1 a<r,LE  
重启即可
  1. service mysql restart
a_5s'Dh  
S 4 17.n  
Debian、Ubuntu 安装: 87l*Y|osP  
]zJO)(d$>  
  1. apt-get install libjemalloc1 libjemalloc-dev -y
L{F]uz_[x  
1aRTvaGo  
启用 jemalloc 优化 U-1UWq  
修改 /etc/mysql/percona-server.conf.d/mysqld_safe.cnf 添加 malloc-lib = /usr/lib/x86_64-linux-gnu/libjemalloc.so.1 |w*s:p  
重启即可 service mysql restart h>GbJ/^  
-`\rDPGf  
关闭 THP T&pCLvkz  
6&SNFOX{@  
Evm3Sm!S  
THP(Transparent Huge Pages) 在有数据库服务(Mysql、Redis、MongoDB)的机器上都是建议关闭的 不然总会发生莫名其妙的事情,TokuDB 也是一定要关闭的。 ~s HdOMw  
在 /etc/rc.local 加入如下语句,这样就算重启系统也会动关闭 0:[A4S`X  
> VIFQ\  
)Wq1 af   
  1. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  2. echo never > /sys/kernel/mm/transparent_hugepage/defrag
$aJay]F  
|f$+|9Q?  
安装 TokuDB gF)-Ci  
qfJ2iE|o2.  
为了安装这货前面做的准备也是真不少。 }WC[ <AqI  
REHL、CentOS 安装
  1. yum install Percona-Server-tokudb-57
E<3xv;v8r  
Debian、Ubuntu 安装
  1. apt-get install percona-server-tokudb-5.7
xtv%C  
开启 TokuDB 引擎
  1. ps_tokudb_admin --enable -uroot -`root密码`
#?S"y:  
nN<,rN{ :  
然后就大功告成了,我们就可以看见数据库引擎有如下了: p )JR5z  
7!jb  
:~8@fEKb{  
引用
mysql> SHOW PLUGINS; B(s^(__]  
... {z 5YJ*C  
| TokuDB                        | ACTIVE   | STORAGE ENGINE     | ha_tokudb.so | GPL     | (jU_lsG  
| TokuDB_file_map               | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | -d4 v:Jab  
| TokuDB_fractal_tree_info      | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | XTF[4#WO  
| TokuDB_fractal_tree_block_map | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | y-.{){uaD  
| TokuDB_trx                    | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | !zOj`lx  
| TokuDB_locks                  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | fWEQ vQ  
| TokuDB_lock_waits             | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | GBBr[}y-  
| TokuDB_background_job_status  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     | ^\B4]'+^j  
...
AeEdqX)  
6}R*7iM s  
3;Yd"  
修改表,使用新引擎 aeN #<M&$<  
T_Tu>wQX  
一、修改表 ,运行 SQL 语句ALTER TABLE `表名称` ENGINE=TokuDB k6(</uRj  
即可完成修改。 hL/u5h%$  
二、修改压缩算法:
  1. ALTER TABLE `表名称` ENGINE=TokuDB ROW_FORMAT=`压缩算法`;
9rz$c, Y(  
n^{h@u  
TokuDB的压缩算法如何选择: %(&ja_oO  
  1. • tokudb_zlib:表启用zlib压缩,压缩效果偏中,CPU消耗偏中,建议使用(默认)
  2. • tokudb_quicklz:表启用quicklz压缩,压缩效果差,CPU消耗低
  3. • tokudb_lzma:表启用lzma压缩,压缩效果好,CPU消耗高
J'ce?_\?PY  
{c3FJ5:  
9VTAs:0D=  
[ 此帖被ivmmff在2017-03-24 10:55重新编辑 ]
QQ:1251205255,仅提供付费服务。
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个