TokuDB存储引擎

 

TokuDB存储引擎


TokuDB是一个高度可扩展,零维护的停机MySQL存储引擎,可提供基于索引的查询加速,改进的复制性能,无与伦比的压缩和实时架构修改。该TokuDB存储引擎是一个可扩展的,酸,MVCC兼容的存储引擎,提供基于索引的查询改进,可以在线修改架构,减少了从滞后两个硬盘驱动器和闪存。此存储引擎专为在写入密集型工作负载上实现高性能而设计,可通过分形树索引实现。

 

安装: 

安装percona mysql 仓库

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

yum install Percona-Server-server-57

Percona-Server-tokudb-57-5.7.18-15.1.el6.x86_64

yum install jemalloc 

或者二进制包:

wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.18-15/binary/tarball/Percona-Server-5.7.18-15-Linux.x86_64.ssl100.tar.gz

可能会缺少依赖库文件等:ldd ./mysqld查看一下。如:

ln -s /usr/lib64/libcrypto.so.10 libcrypto.so.1.1

ln -s  /usr/lib64/libssl.so.10 libssl.so.1.1

配置项目依赖:

[mysqld_safe] 

malloc-lib=/usr/lib64/libjemalloc.so.1

 

引擎项启动

ps_tokudb_admin –enable -uroot -p  --socket 

输入Mysql的root帐号密码,完成启动。命令字符都是英文输入法下的短横杠。

此脚本用于安装和卸载Percona Server 5.7的TokuDB插件。

 

安装后相关需要的目录:

/usr/bin/jemalloc.sh

/usr/lib64/libjemalloc.so.1

/usr/lib64/mysql/plugin/

rpm -ql Percona-Server-tokudb-57-5.7.18-17.l.el6.x86_64

 

启动:

/usr/local/mysql_5.7/bin/mysqld_safe --defaults-file=/data1/mysql_5.7/my.cnf --user=mysql --disable-partition-engine-check

/usr/local/mysql_5.7/bin/mysqld ...


tokudb参数

tokudb_analyze_delete_fraction   控制在 对TokuDB表执行操作期间是否将分形树中已删除的行报告给客户端和MySQL错误日志 、值为0-1.设置为1时表示不报告任何错误。0.1表示10%删除的行尚未进行垃圾回收则报错到日志中。

 

tokudb_directio  启用后,TokuDB使用直接I / O而不是缓冲I / O进行写入。使用直接I / O时,请考虑tokudb_cache_size从其默认的1/2物理内存增加。

 

tokudb_disable_prefetching 预取

tokudb_enable_fast_update  tokudb_enable_fast_upsert 快速更新和插入功能。 快速更新涉及查询优化,以避免在执行期间进行随机读取。    

tokudb_fs_reserve_percent   此变量控制允许插入必须可用的文件系统的百分比。默认情况下,此设置为5。我们建议此保留至少是物理内存大小的一半。有关详细信息,请参阅完整磁盘

tokudb_hide_default_row_format  是否隐藏show create table 的行压缩格式 例如 ROW_FORMAT=TOKUDB_ZLIB。

tokudb_max_lock_memory  此变量指定PerconaFT锁定表的最大内存量。

tokudb_prelock_empty 默认情况下,TokuDB抢占式地抢占空表的整个表锁。如果一个事务正在进行加载,例如当用户将表加载到空表中时,此默认值会提供相当大的加速。但是,如果多个事务尝试对空表执行并发操作,则除了一个事务之外的所有事务都将被锁定。tokudb_prelock_empty通过关闭抢占式预锁定来禁用 此多事务案例的优化。

innodb_use_native_aio 如果使用TokuBackup备份InnoDB表,则必须禁用InnoDB异步IO 。否则,您将拥有不一致,不可恢复的备份。适当的设置是。innodb_use_native_aio=0


tokudb热备:

1、拷贝libHotBackup.so 到/usr/lib 或/usr/lib64

2、配置文件中添加:

[mysqld_safe]

preload-hotbackup

3、执行

ps_tokudb_admin --enable-backup --host=127.0.0.1 --user=root--password='123456' --port=3306

4、备份相关先选:

tokudb_backup_allowed_prefix  备份目录前缀

tokudb_backup_dir  在session指定该参数开始备份

innodb_use_native_aio  如果使用TokuBackup备份InnoDB表,则必须禁用InnoDB异步IO 。 否则备份不一致。innodb_use_native_aio=0

tokudb_backup_exclude  正则表达式排除某些文件和目录 

注意:发起备份只备份 tokudb_backup_dir  tokudb_log_dir  datadir参数指定的目录。备份结果没有二进制日志点。需要手动找出。

 

5、备份:

配置文件:

innodb_use_native_aio = OFF

重启实例

set tokudb_backup_dir='/data1/backup'; 即开始备份。

6、还原, tokudbback 的还原只是cp 备份结果到 参数指定相应目录就可以启动。启动的时候数据库自动做tokudb innodb的恢复。

 


tokudb文件:

tokudb目录下的文件说明:

 

tokudb.environment   此文件是Percona FT文件集的根目录,包含有关系统的各种元数据,例如创建时间,当前文件格式版本等。

tokudb.rollback   Percona FT中的每个事务都维护自己的事务回滚日志。这些日志一起存储在单个Percona FT字典文件中,占用Percona FT缓存表中的空间 类似undo。

tokudb.directory toku文件映射

__tokudb_lock_dont_*  锁定文件  这些空文件仅用作进程间的信号量。只要当前没有服务器实例正在运行并使用数据集,就可以安全地删除/忽略它们。

表文件tablename_*:

tablename_status_xxxx 表元数据文件

tablename_main_xxxx 是表数据主文件

tablename_key_indexname_xxxx  索引文件

启动的时候,tokudb通过  tokudb.directory 来找到表对应的元数据文件,索引文件,表文件。并写入到  information_schema.tokudb_file_map(内存表)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值