优点:

fractal tree 可以再理解下,对随机IO有非常大的改进浸染

fractal tree 可以快速插入及删除,在随机IO方面的性能比 B-tree的性能更优

mysqlphp搜索引擎MySQL第三方数据库引擎 tokudb Python

高压缩,官网给出最大25倍

对数据及索引进行压缩,根据数据的可压缩性,官网给出的最大压缩比是 25 倍

在线索引创建,创建期间,insert delete的DML支持,update呢 ?

在线列增加删除重命名,修正期间,insert delete的DML支持,update呢 ?

在线备份

多个聚拢索引

无io读复制

TokuDB slave可以配置,让来自master修正可以最小化。
通过记录fractal tree索引:

Insert/update/delete操作可以掌握取消read-modify-write的行为,然后注入到得当的fractal tree。

Update/delete操作可以配置取消须要io的同等性检讨。

为了利用利用无io读复制,做事须要配置:

在replication master:

设置为binlog行模式:BINLOG_FORMAT=ROW

在replication slave:

Slave必须为只读:read_only=1

取消同等性检讨:tokudb_rpl_unique_checks=0

关闭查找(read-modify-write) :tokudb_rpl_lookup_rows=0

可以在一个或者多个slave上配置。
只要master利用了基于行的复制,优化在tokudb slave就可用。
也便是说如果master利用innodb或者myisam表也是可用的。

无损化,少碎片

4Mb为单位进行存储

快速规复

规复时长少于1min

2 Tokudb安装

2.1 percona mysql安装

2.2 安装 jemalloc,管理内存

https://github.com/jemalloc/jemalloc/releases 找个最新版本安装就可以了

解压过程中如果报错如下,请安装 bzip2 包 :yum install -y bzip2

安装成功后,在数据库配置文件中的mysqld_safe模块,添加引用libjemalloc.so,记得须要先找下这个文件的实际位置,然后cp或者ls一份到/usr/lib64目录下。

在数据库配置文件中添加引用

把稳,数据库关闭后,须要用mysqld_safe启动做事,利用 jemalloc 管理内存。

2.3 修正transparent_hugepage

tokudb引擎须要启动透来岁夜页,更好的供应内存管理。

须要修正为never,如果不修正,利用tokudb引擎的时候,会在error.log中报错

配置如下:

2.4 安装tokudb引擎跟percona client

官网下载后安装。

2.5 启用tokudb存储引擎

安装tokudb引擎后,会提示启动指令语法如下:

利用 ps_tokudb_admin指令 :

ps_tokudb_admin --enable -uroot -p --sock=/tmp/pmysql.sock --defaults-file=/data/mysql/mysql3306.cnf

如果正常,则因此下显示,不正常的话,看下前面的安装步骤是不是少了

安装生产后,可以在

TokuDB Version

3 文件管理及剖析

3.1 安装tokudb引擎后的新增文件

在数据目录中,新增了8个文件

tokudb.environment:tokudb赢取的环境变量存储文件,像创建韶光、当前版本号

tokudb.rollback:每一个tokudb的事务,都有自己的回滚日志,详细回滚日志分配干系信息记录在这里

tokudb.directory:映射文件夹的名字

3.2 tokudb文件管理

可以统一把tokudb的数据文件存储在某个文件夹下,参数是 tokudb_data_dir

可以统一把tokudb的临时文件存储在某个文件夹下,参数是 tokudb_tmp_dir

可以统一把tokudb的日志文件存储在某个文件夹下,参数是 tokudb_log_dir

如何迁移:

SELECT dictionary_name, internal_file_name FROM INFORMATION_SCHEMA.TokuDB_file_map;

移动 .tokudb 文件 跟 __tokudb_lock_dont_delete_me_data 到新的存储目录

移动 __tokudb_lock_dont_delete_me_temp 到新的 存储目录

移动 到新的 log.tokulog files and your __tokudb_lock_dont_delete_me_logs file 存储目录

关闭数据库做事

配置文件中添加或者修正 tokudb_data_dir、tokudb_tmp_dir、、、

创建 tokudb 文件的存储目录

移动文件

启动数据库做事器

查看文件的存放位置

3.3 问题剖析

https://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_troubleshooting.html

information_schema库里边的相应系统视图剖析

4 备份

tokudb如何备份呢?

单表也可以利用mysqldump。
全库呢? tokudb引擎全库备份,官方版本是利用 tokudb_backup 引擎来进行,支持在线热备。
也便是,须要其余安装这个引擎,安装相对大略,利用 ps_tokudb_admin + 重启数据库做事预加载引擎 + ps_tokudb_admin。

4.1 安装备份引擎

首先,确保数据库是启动正常状态,实行ps_tokudb_admin,如果 数据库配置文件 cnf不是在 /etc/my.cnf,须要手动指定 --defaults-file,避免无法找到配置文件写入 preload-hotbackup。

这个时候,可以看到提示:Successfully added preload-hotbackup option into /data/mysql/pmysql3330.cnf,查看配置文件,在 mysqld_safe 配置中,添加多了一行 配置 :preload-hotbackup。

重启数据库做事,利用 mysqladmin关闭,mysqld_safe 启动

这里有个地方把稳下, libHotBackup.so 记得要cp到 /usr/lib 或者 /usr/lib64的目录下,不然mysqld_safe启动数据库的时候,会报错如下:

这种情形下,它检讨到 安装目录下有 libHotBackup.so 引擎文件,会利用这个加载,须要 把这个文件拷贝到 /usr/lib64 或者 /usr/lib,再重新加载这个文件,然后再次实行 mysqld_saft启动做事。

数据库启动后,安装备份引擎

检讨

4.2 备份tokudb

实例备份

配置条件

如果实例含有innodb引擎的表格,须要关闭 innodb异步io的变量 innodb_use_native_aio,避免涌现数据不一致,无法规复的备份。
这个变量只能在配置文件中添加,属于readonly变量

建立备份文件夹,这个文件夹必须是为空、授权备份文件夹可写,由于备份的时候,须要写入及创建文件夹,以是对其所在的文件夹须要有权限

把稳,tokudb_back对本身引擎的表格,支持对单独存储的 tokudb_data_dir\ tokudb_log_dir \binary log备份,但是,不支持不支持不支持 innodb或者myisam引擎的表格其余存储,也便是 所有的InnoDB存储引擎,MyISAM,及其他文件必须在MySQL datadir

tokubackup不备份MySQL的配置文件(S)

tokubackup不支持增量备份

配置

chown -R mysql:mysql /data/backup

在配置文件中设置 innodb_use_native_aio = OFF,重启数据库实例,这里把稳,启动数据库须要到 /usr/local/pmysql 目录下,实行 ./bin/mysqld_safe --defaults-file=/data/mysql/pmysql3330.cnf

建立文件夹 /data/backup/pmysql3330 ,并授权

备份分为2中,一种是实例备份,一种是指定备份,目前tokudb_backup仅支持全体实例备份,支持稠浊引擎,指定备份,目前采取mysqldump方法。

实例备份

set tokudb_backup_dir='/data/backup/pmysql3330';

实行这个指令则开始备份,备份过程中,支持读写,

备份出错验证

表格备份

实例备份后还原

tokudbback没有特定的函数进行数据规复,可以利用cp或者sync到 数据目录,或者直策应用备份目录

把稳权限修正