自己慢慢积累。
分类: Mysql/postgreSQL
2015-02-27 17:18:23
1、安装mysql(可以是mariadb、percona或oracle mysql)
安装percona的源
yum install然后选择合适的版本 [这里选择5.6.17 ]安装即可,很简单这里就不多废话。
2、安装tokuDB
tokuDB内存分配需要jemalloc支持(一般安装percona mysql以后自己就有,如果没有则需要额外安装)
(1)、 安装jemalloc
yum install jemallocmv Percona-Server-5.6.17-rel66.0-608.TokuDB.Linux.x86_64 percona-Server-5.6.17-rel66.0-608.TokuDB.Linux.x86_64
然后将/usr/local/src/percona-Server-5.6.17-rel66.0-608.Linux.x86_64/lib/mysql/plugin下的ha_tokudb.so 链接或拷贝到mysql
的plugin目录[/database1/mysql/Percona-Server-5.6.17-rel66.0-608.Linux.x86_64/lib/mysql/plugin/]下即可
或者你也可以使用rpm二进制包安装,这个也简单不多解释echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
建议写到 /etc/rc.local 中,重启后也可生效
INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';(如果指定的数据文件和日志文件不在默认的mysql数据目录下的话)然后在my.cnf配置好toku的参数后重启即可
INSTALL PLUGIN tokudb_fractal_tree_info SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_fractal_tree_block_map SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_trx SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_locks SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb_lock_waits SONAME 'ha_tokudb.so';
INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so'; ###安装这个后会生成toku相应的日志文件和回滚文件等,需要删除
推荐参数:
tokudb_commit_sync=ON注意指定的目录必须存在并且具有可访问的权限
tokudb_cache_size=10G ##指定tokuDB可使用的缓存类似innodb 的innodb_buffer_pool_size 默认是物理内存的50%
tokudb_directio=ON ##写操作不经过缓存,直接写入磁盘
row_format=tokudb_fast ##指定行格式默认是tokudb_zlib
tokudb_tmp_dir=/database1/mysql_tmpdir
tokudb_write_status_frequency =1
tokudb_read_status_frequency=1
tokudb_data_dir=/xxx/yyy
tokudb_log_dir=/xxx /yyy
UNINSTALL PLUGIN tokudb ;另外进入数据目录删除tokudb相关的文件
UNINSTALL PLUGIN tokudb_file_map ;
UNINSTALL PLUGIN tokudb_fractal_tree_info;
UNINSTALL PLUGIN tokudb_fractal_tree_block_map;
UNINSTALL PLUGIN tokudb_trx ;
UNINSTALL PLUGIN tokudb_locks;
UNINSTALL PLUGIN tokudb_lock_waits;
安装当中可能的报错
'/database1/mysql/percona-sever-4005/lib/mysql/plugin/ha_tokudb.so' (errno: 13 /database1/mysql/percona-sever-4005/lib/mysql/plugin/ha_tokudb.so:很明显是数据库插件目录没有ha_tokudb.so 共享库,做一个软连接或拷贝ha_tokudb.so到percoan mysql的plugin目录下即可
cannot open shared object file: No such file or directory)
(3)使用tokudb创建表
CREATE TABLE `toku` (
`pid` varchar(32) NOT NULL DEFAULT '',
`CREATETIME` datetime NOT NULL,
`UPDATETIMES` datetime NOT NULL,
`USER_ID` bigint(20) NOT NULL,
`HOMEWORK_ID` varchar(255) DEFAULT NULL,
`COMPLETE_PRACTICE` int(11) NOT NULL DEFAULT '0',
`note` varchar(256) NOT NULL DEFAULT '',
`CLAZZ_ID` bigint(20) NOT NULL DEFAULT '0',
`score` bigint(20) NOT NULL DEFAULT '0',
`NOTE_CHECKEDS` bit(1) NOT NULL DEFAULT b'0',
PRIMARY KEY (`pid`)
) ENGINE=TokuDB
(4)、 一些注意事项
1、alter table xxx engine=tokudb 的情况会加metadata锁阻塞插入更新, 而myql-5.6.17 innodb引擎则不会导致阻塞。
(5)、tokuDB事物、锁信息查看
查看事物情况:
SELECT * FROM information_schema.tokudb_trx,
(6)、 关于TokuDB行格式
tokudb_row_format 可以设置如下的几个值:tokudb_default: 设置默认的压缩行为。在 TokuDB 7.1.0版本,默认使用zlib 库进行压缩,未来版本可能会改变。
tokudb_fast: 使用quicklz 库的压缩模式。
tokudb_small: 使用 lzma 库的压缩模式。
tokudb_zlib: 使用 zlib 库的压缩模式,提供了中等级别的压缩比和中等级别的CPU消耗。
tokudb_quicklz: 使用 quicklz 库的压缩模式, 提供了轻量级的压缩比和较低基本的CPU消耗。
tokudb_lzma: 使用lzma库压缩模式,提供了高压缩比和高CPU消耗。
吐槽:
该引擎现在一般用于大量历史数据的归档存储,但是最致命的还是没有一款合适的备份工具,只能使用mysqldump 备份或者停机物理备份,貌似官方的物理备份工具要收费。
之后有时间再补充TokuDB的压测报告 。