背景
项目目前使用的Sequoiadb数据库,撑不住每小时千万的数据量了,所以领导安排研究TokuDB。
安装TokuDB引擎之前需要先安装MySQL,而且推荐的是Percona MySQL。本文选择通过仓库安装的方式,在CentOS上安装Percona MySQL和TokuDB,由于官网有些操作不够不完整而且有部分不一致,所以安装过程并不顺利,碰到了几个小问题,在此一并整理。
Percona MySQL安装
1 安装Percona MySQL的仓库
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
安装完成,出现如下信息:
2 测试仓库
yum list | grep percona
得到如下信息,说明正常可用
3 安装Percona MySQL
yum install Percona-Server-server-57
安装Percona Mysql5.7,一路输入y,安装成功如下:
MySQL密码修改
1 启动mysql服务
service mysql start
service mysql restart
service mysql stop
service mysql status
使用service mysql start启动mysql服务。
2 使用临时密码登录并修改密码
grep ‘temporary password’ /var/log/mysqld.log
找到该文件中的临时密码,并以此登录mysql
注意,mysql有密码安全机制,所以设置的密码需要足够复杂,并记录下来。
3 修改编码
编辑/etc/my.cnf文件,在[mysqld]下面添加一行(没有[mysqld]就添加一行),不能再写以前的default_character_set了,必须是default-character-set=utf8 。
[mysqld]
character_set_server=utf8
TokuDB安装
1 安装jemalloc,并查看安装信息:
yum install jemalloc
rpm -qa |grep jemalloc
rpm -ql jemalloc-3.6.0-1.el6.x86_64
第一步完成后,执行第二步,得到安装的版本信息,再执行第三步,找到安装文件的信息如下:
2 配置依赖
编辑/etc/my.cnf,添加jemalloc的地址,就是上图.so.1后缀文件全路径。(官网的路径为malloc-lib= /path/to/jemalloc,百度才得到真正的值是上图的文件路径)
[mysqld_safe]
malloc-lib=/usr/lib64/libjemalloc.so.1
3 检查Transparent huge pages
关闭操作:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
4 安装TokuDB
版本必须和Percona的版本一致,我们前面安装的是Percona5.7,所以此处也需要安装toku5.7,否则提示版本冲突。官网Percona的安装步骤是5.7,而后面的TokuDB的安装用的是5.6,所以出现了这个不一致。这里调整下版本号就可以了。
yum install Percona-Server-tokudb-57.x86_64
安装完成如下
TokuDB引擎启动
1 启动引擎:直接使用shell命令ps_tokudb_admin:
ps_tokudb_admin –enable -uroot -p
输入Mysql的root帐号密码,完成启动。命令字符都是英文输入法下的短横杠。
此操作,出现了一个错误,SELinux的配置有问题,导致安装失败。
解办法:解决办法:编辑/etc/selinux/config文件修改selinux=permissive,保存之后,执行下面代码修正selinux的值为0.
setenforce 0
ps_tokudb_admin –enable -uroot -p
2 引擎插件安装成功,截图如下:
3 重启mysql服务
service mysql restart
4 查看引擎
执行mysql -u root -p,登录mysql,执行show engines,得到下图:
至此,终于成功安装了tokuDB插件了。
启示录
其实就是安装操作步骤多而已,算不上复杂,就是要有耐心。主要碰到了几个小问题。
第一,安装了Percona MySQL5.7后,再根据官网提示安装TokuDB的版本是5.6,结果安装失败,提示了一个conflict 5.7和TokuDB的5.6冲突。机智如我,试着改成5.7,竟然就好了。
第二,TokuDB要求SELinux的值为permitive或者disabled,同时要求hugepage=disabled。安装有如下提示信息:
INFO: Transparent huge pages are enabled (should be disabled).
Checking TokuDB engine plugin status…
INFO: TokuDB engine plugin is not installed.
表明没有安装成功。修正系统配置后,再试就好了。
结论就是:安装操作太繁琐了,能否封装成一个安装shell ,一键执行呢,不用照着安装手册,手动敲击这些命令。上个月就写过Sequoiadb数据库的安装shell,哪天有空了再捣鼓下,看看能否解放我们的双手呢。