centos6.4安装Tokudb

本文详细记录了Percona Server环境下安装Tokudb存储引擎的过程及遇到的问题解决方法,包括配置文件调整、缺失库文件处理等关键步骤。
在percona官网下载带有Tokudb的二进制包,也可以选择源码编译。tokudb有单独的包,但是percona-Server包中已经包含了Tokudb,所以就不需要下载了。
我这里下载的是最新的包,5.6.19-67
解压 tar -zxvf Percona-Server-5.6.19-rel67.0-618.Linux.x86_64.tar.gz
将解压文件夹,拷贝到/usr/local下面,此时可以重命名,我这里重命名为  /usr/local/Percona-Mysql/
将启动脚本复制到/etc/init.d/下面
cd /usr/local/Percona-Mysql/
cp support-files/mysql.server /etc/init.d/
在/etc/下面创建配置文件/etc/my.cnf。具体的配置内容参考了叶金荣的一遍文章,每一项参数的意义后续
在仔细研究。最后附配置文件内容.


接下来和mysql一样,初始化DB,执行scripts/mysql_install_db  --user=mysql --datadir=/data/mysql --basedir=/usr/local/Percona-Mysql/
初始化完成后,此时启动mysql服务会失败。
找不到/usr/local/Percona-Server-5.6.19-rel67.0-618.Linux.x86_64/bin/mysqld文件,
这是因为mysql.server启动脚本,默认寻找/usr/local/Percona-Server-5.6.19-rel67.0-618.Linux.x86_64 目录,而我在上面拷贝的时候已经更名为
/usr/local/Percona-Mysql。
所以修改/etc/init.d/mysql.server启动脚本中basedir和bindir为:
basedir=/usr/local/Percona-Mysql
bindir=/usr/local/Percona-Mysql/bin


默认这两个值为空




然后再次启动
报错信息如下:


[root@test Percona-Mysql]# /etc/init.d/mysql.server start
./bin/my_print_defaults: error while loading shared libraries: libssl.so.6:  cannot open shared object file: No such file or directory
Starting MySQL (Percona Server). ERROR! The server quit without updating PID file (/usr/local/Percona-Mysql/data/test.pid).
[root@test Percona-Mysql]# 
[root@test Percona-Mysql]# 


安装libssl.so.6 ,yum -y install libssl.so.6


[root@test Percona-Mysql]# find / -name "libssl.so*"
/usr/lib64/libssl.so
/usr/lib64/libssl.so.1.0.0
/usr/lib64/libssl.so.6
/usr/lib64/libssl.so.10
/usr/lib/libssl.so.0.9.8e
/usr/lib/libssl.so.6
[root@test Percona-Mysql]# 


创建一个so文件链接。
[root@test Percona-Mysql]# 
[root@test Percona-Mysql]# ln -s /usr/lib64/libssl.so /usr/lib64/libssl.so.6
[root@test Percona-Mysql]# ldconfig 
[root@test Percona-Mysql]# /etc/init.d/mysql.server start
./bin/my_print_defaults: error while loading shared libraries: libcrypto.so.6: cannot open shared object file: No such file or directory
Starting MySQL (Percona Server). ERROR! The server quit without updating PID file (/usr/local/Percona-Mysql/data/test.pid).


[root@test Percona-Mysql]# 
启动还是报错
寻找是否存在这个so文件
[root@test Percona-Mysql]# find / -name "libcrypto.so*"
/usr/lib64/libcrypto.so
/usr/lib64/libcrypto.so.10
/usr/lib64/libcrypto.so.1.0.0
/usr/lib/libcrypto.so.6
/usr/lib/libcrypto.so.0.9.8e
[root@test Percona-Mysql]# 
既然有,那就建立一个连接,再次启动。错误消失。这里要注意一点,在64位机器上,使用的是/usr/lib64下面的so文件。如果将/usr/lib/下面so文件拷贝过去,
会报错,引用了32位的so文件。


so文件的错误消失了,还是启动失败。
2014-08-14 18:30:42 38866 [Note] Server hostname (bind-address): '*'; port: 3306
2014-08-14 18:30:42 38866 [Note] IPv6 is available.
2014-08-14 18:30:42 38866 [Note]   - '::' resolves to '::';
2014-08-14 18:30:42 38866 [Note] Server socket created on IP: '::'.
2014-08-14 18:30:42 38866 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
140814 18:30:42 mysqld_safe mysqld from pid file /usr/local/Percona-Mysql//data/test.pid ended
这是因为scripts/mysql_install_db  --user=mysql --datadir=/data/mysql --basedir=/usr/local/Percona-Mysql/ 指定的datadir为/data/mysql
而在配置文件中没有指定,因此报错。在配置文件中加上datadir = /data/mysql即可。


接下来启动还是失败。错误日志如下:
2014-08-14 18:34:20 39955 [Note] InnoDB: Waiting for purge to start
2014-08-14 18:34:20 39955 [Note] InnoDB:  Percona XtraDB (http://www.percona.com) 5.6.19-rel67.0 started; log sequence number 1626008
2014-08-14 18:34:20 39955 [ERROR] /usr/local/Percona-Mysql/bin/mysqld: unknown variable 'malloc-lib=/usr/local/Percona-Mysql/lib/mysql/libjemalloc.so'
2014-08-14 18:34:20 39955 [ERROR] Aborting


报错找不到malloc-lib 参数,
我的tokudb部分参数配置如下:
[mysqld]下面:
#tokudb
malloc_lib = /usr/local/Percona-Mysql/lib/mysql/libjemalloc.so
plugin_dir = /usr/local/Percona-Mysql/lib/mysql/plugin/
plugin_load=ha_tokudb.so




tokudb_data-dir = /data/zabbix/tokudbData
tokudb_log-dir = /data/zabbix/tokudbLog




tokudb_row_format = tokudb_small
tokudb_row_format = tokudb_fast
tokudb_cache_size = 44G 


tokudb_commit_sync = 0
tokudb_directio = 1
tokudb_read_block_size = 128K
tokudb_read_buf_size = 128K


因为这个参数找了不少资料都没解决,最后咨询了叶金荣,需要将malloc_lib = /usr/local/Percona-Mysql/lib/mysql/libjemalloc.so 
放在[mysqld_safe]部分下面。而且只能将这一项放在这下面,其他还是放在[mysqld]下面
然后启动,顺利了。
"root@127.0.0.1 Thu Aug 14 22:39:25 2014 22:39:25 [(none)]>show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                                    | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                                      | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables                  | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears)             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                                      | NO           | NO   | NO         |
| TokuDB             | YES     | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology             | YES          | YES  | YES        |
| InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES          | YES  | YES        |
| ARCHIVE            | YES     | Archive storage engine                                                     | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                             | NULL         | NULL | NULL       |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
10 rows in set (0.00 sec)


后面查了[mysqld] 和 [mysqld_safe]配置的区别,这部分在官方文档都有说明,官方文档明确支出malloc_lib
只能放在 [mysqld_safe]下面才能生效。有问题查官方文档是最简洁的办法。


tokudb安装顺利完成,后附配置文件
[mysqld]
open_files_limit = 8192
max_connect_errors = 100000


#buffer & cache
table_open_cache = 2048
table_definition_cache = 2048
max_heap_table_size = 96M
sort_buffer_size = 2M
join_buffer_size = 2M
tmp_table_size = 96M
key_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 32M
basedir=/usr/local/Percona-Mysql/
datadir=/data/mysql
#innodb
#只有部分小表保留InnoDB引擎,因此InnoDB Buffer Pool设置为1G基本上够了
innodb_buffer_pool_size = 1G
innodb_buffer_pool_instances = 1
innodb_data_file_path = ibdata1:1G:autoextend
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 64M
innodb_log_file_size = 256M
innodb_log_files_in_group = 2
innodb_file_per_table = 1
innodb_status_file = 1
transaction_isolation = READ-COMMITTED
innodb_flush_method = O_DIRECT


#tokudb
plugin_dir = /usr/local/Percona-Mysql/lib/mysql/plugin/
plugin_load=ha_tokudb.so


#把TokuDB datadir以及logdir和MySQL的datadir分开,美观点,也可以不分开,注释掉本行以及下面2行即可
tokudb_data-dir = /data/zabbix/tokudbData
tokudb_log-dir = /data/zabbix/tokudbLog


#TokuDB的行模式,建议用 FAST 就足够了,如果磁盘空间很紧张,建议用 SMALL
tokudb_row_format = tokudb_small
tokudb_row_format = tokudb_fast
tokudb_cache_size = 44G


#其他大部分配置其实可以不用修改的,只需要几个关键配置即可
tokudb_commit_sync = 0
tokudb_directio = 1
tokudb_read_block_size = 128K
tokudb_read_buf_size = 128K

[mysqld_safe]  #这里要特别注意,一般很少接触到这部分参数
malloc_lib = /usr/local/Percona-Mysql/lib/mysql/libjemalloc.so.1 











来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22418990/viewspace-1251497/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22418990/viewspace-1251497/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值