在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
我这里下载的是最新的包,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/
本文详细记录了Percona Server环境下安装Tokudb存储引擎的过程及遇到的问题解决方法,包括配置文件调整、缺失库文件处理等关键步骤。
246

被折叠的 条评论
为什么被折叠?



