压缩细节…金沙网址:

Percona TokuDB

Percona TokuDB.
1

1.    
TokuDB说明…
1

2.    
TokuDB安装…
1

3.    
使用TokuDB.
1

3.1 快捷插入和富索引…
1

3.2 聚集secondary索引…
1

3.3 在眉目引成立…
1

3.4 在线增添,删除,扩张,重命名列…
1

3.5           
压缩细节…
1

3.6 订正表的压缩…
1

3.7 无io读复制…
1

3.8 事务和ACID包容复苏…
1

3.9 管理Log大小…
1

3.10 恢复…
1

3.11 关闭写缓存…
1

3.12 进程追踪…
1

3.13 迁移到TokuDB.
1

4 TokuDB后台
ANALYZE TABLE.
1

4.1 后台作业…
1

4.2 自动深入分析…
1

4.3 系统变量…
1

4.4 information_schema相关表…
1

5 TokuDB变量…
1

6 TokuDB Troubleshooting.
1

6.1 获知难题…
1

6.2 TukoDB锁…
1

6.2.1 TOKUDB_TRX表…
1

6.2.2 TOKUDB_LOCKS表…
1

6.2.3 TOKUDB_LOCK_WAITS表…
1

6.3 引擎状态…
1

6.4 全局状态变量…
1

7 Percona TokuBackup..
1

7.1 从binary安装…
1

7.2 备份…
1

7.3 还原…
1

7.4 推荐配置…
1

7.4.1 监察和控制进程…
1

7.4.2 清除源文件…
1

7.4.3 备份率阀值…
1

7.4.4 约束备份指标…
1

7.4.5 错误报告…
1

7.4.6 限定和已知的主题材料…
1

8 FAQ..
1

 

1.  TokuDB说明

具体看:

2.  TokuDB安装

Percona Server包容独立可用的TokuDB存款和储蓄引擎包。TokuDB引擎必得分离下载然后以插件的花样启用。这么些包能够独立设置,没有需求别的特定的本子的Percona
Server。

TokuDB存款和储蓄引擎是可扩张,ACID,MVCC的蕴藏引擎,提供基于索引查询,提供online的框架改革和压缩slave延迟。那几个蕴藏引擎设计员为了写入质量,是基于fractal
tree的。

警告:

      
最近percona提供的TokuDB被接纳在Percona
Server 5.7。TokuDB引擎从任何地方下载的无法被包容。TokuDB文件格式和MySQL变种不是相似的。从四个变种到其它三个可能供给做多少导入导出。

 

嵌入需求

Libjemalloc库

ToKuDB要求libjemalloc 3.3.0或然更加高版本。能够从percona或然其余地方下载。假设libjemalloc,以前未有设置,TokuDB存款和储蓄引擎在运用apt,yum安装的时候自动安装,不过并不会被加载到mysql,可以行使如下配置导入。

[mysqld_safe]

malloc-lib=
/path/to/jemalloc

大页面转化

TokuDB若是在大页面转变运行的时候不会被运维。大页面转变是新水源版本的功用。能够透过以下语句检查时候运转。

$ cat
/sys/kernel/mm/transparent_hugepage/enabled

 [always]
madvise never

倘若开发银行了大页面转变,运行TokuDB引擎会受到错误日志里面有如下消息:

Transparent
huge pages are enabled, according to
/sys/kernel/mm/redhat_transparent_hugepage/enabled

Transparent
huge pages are enabled, according to
/sys/kernel/mm/transparent_hugepage/enabled

你也能够关闭大页面转变意义,把transparent_hugepage=never传递到内核bottloader工具。不过要重启。也得以接纳以下命令关闭:

echo
never > /sys/kernel/mm/transparent_hugepage/enabled

echo
never > /sys/kernel/mm/transparent_hugepage/defrag

 

安装

现行反革命TukoDB能够动用Percona的源安装:

如果为yum:

[root@centos
~]# yum install Percona-Server-tokudb-57.x86_64

如果为apt:

root@wheezy:~# apt-get install percona-server-tokudb-5.7

 

启航TokuDB存款和储蓄引擎

假诺设置好TokuDB就能够宛如下输出:

* This release of Percona Server is distributed with TokuDB storage engine.

   * Run the following script to enable the TokuDB storage engine in Percona Server:

 

    ps_tokudb_admin --enable -u <mysql_admin_user> -p[mysql_admin_pass] [-S <socket>] [-h <host> -P <port>]

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_installation.html for more installation details

 

   * See http://www.percona.com/doc/percona-server/5.7/tokudb/tokudb_intro.html for an introduction to TokuDB

Percona Server实现了ps_tokudb_admin脚本运转TokuDB存款和储蓄引擎。脚本会自动关闭大页面转变。供给sudo 运营一下语句:

ps_tokudb_admin --enable -uroot -pPassw0rd

运维后会输出:

Checking if Percona server is running with jemalloc enabled...

>> Percona server is running with jemalloc enabled.

 

Checking transparent huge pages status on the system...

>> Transparent huge pages are currently disabled on the system.

 

Checking if thp-setting=never option is already set in config file...

>> Option thp-setting=never is not set in the config file.

>> (needed only if THP is not disabled permanently on the system)

 

Checking TokuDB plugin status...

>> TokuDB plugin is not installed.

 

Adding thp-setting=never option into /etc/mysql/my.cnf

>> Successfuly added thp-setting=never option into /etc/mysql/my.cnf

 

Installing TokuDB engine...

>> Successfuly installed TokuDB plugin.

假如脚本未有重返错误,那么TokuDB被成功安装,能够动用show engins检查:

mysql> SHOW ENGINES;

...

 | TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

 

手动运维TokuDB存款和储蓄引擎

假诺你不想用ps_tokudb_admin脚本,就供给手动安装存款和储蓄引擎,加载plugins:

INSTALL PLUGIN tokudb SONAME 'ha_tokudb.so';

INSTALL PLUGIN tokudb_file_map SONAME 'ha_tokudb.so';

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_background_job_status SONAME 'ha_tokudb.so';

下一场拿走当前积累引擎列表:

mysql> SHOW ENGINES;

...

| TokuDB | YES | Tokutek TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |

...

下一场show plugins检查是否安装正确:

mysql> SHOW PLUGINS;

...

| TokuDB                        | ACTIVE   | STORAGE ENGINE     | ha_tokudb.so | GPL     |

| TokuDB_file_map               | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_info      | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_fractal_tree_block_map | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_trx                    | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_locks                  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_lock_waits             | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

| TokuDB_background_job_status  | ACTIVE   | INFORMATION SCHEMA | ha_tokudb.so | GPL     |

...

 

TokuDB版本

查看TokuDB版本:

mysql> SELECT @@tokudb_version;

+------------------+

| @@tokudb_version |

+------------------+

| 5.7.10-1rc1      |

+------------------+

1 row in set (0.00 sec)

3.  使用TokuDB

3.1 急迅插入和富索引

TokuDB使用富索引,让更加快的目录,可以让查询更加快。比方覆盖或许集中索引。

 

3.2 聚集secondary索引

TokuDB允许一个secondary索引定义为集中索引。感觉那全体的表上的列都在这里个secondary索引上。Percona Server解析何况询问优化的时候帮忙多聚焦键,当TokuDB被利用的时候。也便是说在一定条件下,查询优化器会防止主键集中索引读取,而是接受secondary
聚焦索引读取。

前段时间解析式扶持一下语法:

CREATE TABLE ... ( ..., CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CLUSTERING UNIQUE KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier UNIQUE CLUSTERING KEY identifier (column list), ...

CREATE TABLE ... ( ..., CONSTRAINT identifier CLUSTERING UNIQUE KEY identifier (column list), ...

 

CREATE TABLE ... (... column type CLUSTERING [UNIQUE] [KEY], ...)

CREATE TABLE ... (... column type [UNIQUE] CLUSTERING [KEY], ...)

 

ALTER TABLE ..., ADD CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CLUSTERING UNIQUE INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier UNIQUE CLUSTERING INDEX identifier (column list), ...

ALTER TABLE ..., ADD CONSTRAINT identifier CLUSTERING UNIQUE INDEX identifier (column list), ...

 

CREATE CLUSTERING INDEX identifier ON ...

定义secondary聚焦索引:

CREATE TABLE table (

  column_a INT,

  column_b INT,

  column_c INT,

  PRIMARY KEY index_a (column_a),

  CLUSTERING KEY index_b (column_b)) ENGINE = TokuDB;

TokuDB能够利用聚焦索引是因为它精美的裁减和极高的索引率。

 

3.3 在眉目引成立

TokuDB能够让您在线的加多索引到已经存在的表中。不是应用online
关键字,依旧接收tokudb_create_index_online的对话系统变量:

mysql> SET tokudb_create_index_online=on;

Query OK, 0 rows affected (0.00 sec)

 

mysql> CREATE INDEX index ON table (field_name);

也得以接受,alter table命令离线方式的创始索引,不管有未有张开tokudb_create_index_online都是离线的。独有create index形式能够在线的创立。

Online创设索引比offline 的满,和服务繁忙程度有关。创制索引的精度可以经过命令show
processlist查看。黄金年代旦索引成立实现,新的目录在下个查询安顿中就能被应用。

即使在同叁个表上有多余五个的创造索引,索引会线性的被创设。索引创设会等待别的二个完了,在show
processlist中会显示被锁定。推荐在成立索引完结之后再来实践下叁个。

 

3.4 在线加多,删除,扩张,重命名列

TokuDB能够让您增多和删除已经存在表的列,增添char,varchar,varbinary,integer类型,恐怕重命名已经存在的列。HCADE奥德赛会短暂的锁定表,校勘数据字段。然后当数码从磁盘读入的时候都会被改良。对于列重命名,全部的干活在几秒钟内到位,在磁盘上的数据不会被改过。

获取HCADE奥迪Q5的好品质,的几点:

Ÿ   增添,删除恐怕扩大操作的接轨会被以为是fractal
tree的一部分。
能够行使optimize table x来一遍性管理,optimize table并不会重新创立索引,不过会诱发HCADER的周转。

Ÿ   每一个HCADE奥迪Q7必需独立的周转。要是想要增加和删除改七个列,那么就写五个语句。

Ÿ   幸免HCADE本田UR-V和在头脑引操作一齐管理。

Ÿ   表锁的风浪有所区别,HCADE安德拉的锁定事件是脏数据刷新的平地风波,因为mysql会在alter table之后关闭。借使方今发出过检查点,那么操作就能异常快。倘若有太多的脏数据,那么刷新事件只怕会很短。

Ÿ   防止删除的列是索引的意气风发有个别。假使列是索引的豆蔻年华有的,那么删除会一点也不快。

Ÿ   在线扩张只扶持char,varchar,varbinary和integer。假若字段是主键也许其余secondary索引的风流倜傥有的也不帮助。

Ÿ   重命名只可以是一句二个列。

注意有所的列属性必得制订,alter table
change恐怕会非常慢:

Ÿ   在线列重命名不帮助以下字段,time,enum,blob,tinyblob,mediumblob,longblob。那些列的重命名会走正规的流水生产线。

Ÿ   偶然表不能够动用HCADEEvoque。

 

3.5    压缩细节

TokuDB提供区别级其余缩小,是cpu和压缩率之间的一些平衡。规范的压缩使用一丢丢的cpu但是压缩等级也十分的低,高等别的减削比较消耗cpu。

TokuDB压缩发生在后台线程,表示高压缩率并不会推迟数据库。事实上,在好几某个情状下,压缩率越高质量越好。

注意:

       平常在6核一下的推荐介绍标准的削减,6核以上的推荐高压缩

压缩率的选择依旧决计于数据库的时候,推荐应用默许配置。

裁减在create table,alter table的基于每张表设置行格式:

CREATE
TABLE table (

 
column_a INT NOT NULL PRIMARY KEY,

 
column_b INT NOT NULL) ENGINE=TokuDB

 
ROW_FORMAT=row_format;

 

假如在create table 的时候从不安装行格式,那么是怎么减弱看tokudb_row_format的安装。若无设置tokudb_row_format,那么压缩就使用zlib。

Row_format和tokudb_row_format取值如下:

·        
TOKUDB_DEFUALT:以私下认可形式收缩。在TokuDB 7.1,暗中认可的应用zlib进行裁减,之后恐怕会改。

·        
TOKUDB_FAST:那一个装置使用quicklz压缩。

·        
TOKUDB_SMALL:使用lzma进行压缩。

其它也得以一分区直属机关接选举择压缩库,可用的压缩库:

·        
TOKUDB_ZLIB:运用zlib进行压缩,提供中等的滑坡和cpu使用率

·        
TOKUDB_QUICKLZ:选用quicklz实行减削,提供轻量级的减少和低cpu使用率。

·        
TOKUDB_LZMA:利用lzma进行压缩,提供最高的回退和cpu使用率。

·        
TOKUDB_SNAPPY:行使snappy进行压缩,合理的飞速的压缩。

·        
TOKUDB_UNCOMPRESSED:其风流浪漫设置关闭了压缩,况兼表不会被减去。

3.6 校订表的压缩

修正表的滑坡语法如下:

ALTER
TABLE table

 
ROW_FORMAT=row_format;

注意:

       改过表偶的裁减至会影响性写入的数目。改善表压缩之后方可因而OPTIMZE
TABLE把具备的block全体写一遍。

3.7 无io读复制

TokuDB slave能够布署,让来自master修正能够最小化。通过记录fractal tree索引:

·        
Insert/update/delete操作可以垄断(monopoly卡塔 尔(英语:State of Qatar)打消read-modify-write的行为,然后注入音信到适当的fractal tree。

·        
Update/delete操作能够配备裁撤须求io的大器晚成致性检查。

为了采用应用无io读复制,服务要求安顿:

·         在replication master:

o    设置为binlog行模式:BINLOG_FORMAT=ROW

·         在replication slave:

o    Slave必需为只读:read_only=1

o    撤废后生可畏致性检查:tokudb_rpl_unique_checks=0

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

能够在二个依旧八个slave上安顿。只要master使用了基于行的复制,优化在tokudb slave就可用。也便是说假使master使用innodb大概myisam表也是可用的。

3.8 事务和ACID宽容恢复生机

暗中认可,Tokudb检查有着检查点之间的开发的表和日志的改造,所以在系统崩溃的,Tokudb会恢复全部的表大ACID宽容状态。全部的提交业务都会被反射在表上,何况未有提交的作业都会被回滚。

默许检查点60秒实施三次,假诺检查点需求愈来愈多的实行,那么下多少个反省点会马上实施。那几个和日志文件截断的频率有关。客户能够行使flush
logs命令实行检查点。当数据库关闭会试行检查点何况撤除全体的慨叹事务。日志在重启的时候被截断。

3.9 管理Log大小

TokuDB有限协理日志文件能够会到最终一遍检查点。当日志文件到达100MB,就能够运转三个新的公文。不管是还是不是有检查点,全数的日志文件比checkpoint老的都会被撇下。若是检查点时间被设置了非常的大的值,log的截断频率会压缩。私下认可这么些值为60s。

TokuDB为各样伸开的作业保存了回滚日志,各个log的文件大小和作业的天职和被削减保存到磁盘的深浅有关。回滚日志在连带业务实现后会被截断。

 

3.10 恢复

重整旗鼓是自动的,TokuDB使用日志文件,和回滚日志来过来。苏醒的小运和和日志文件的深浅和未压缩回滚日志大小有关。由此只要没有长日子运作的事体,那么恢复进程是赶快的。

 

3.11 关闭写缓存

而是用任何业务安全的数据库,都假若在你理解硬件的写缓存的底蕴上。TokuDB提供业务安全的积累引擎。假如写入磁盘的编慕与著述,操作系统也许硬件未有真的的写入到磁盘,那么crash之后会损坏。

本条时候须要关闭写缓存,在ATA/SATA上应用以下命令:

$
hdparm -W0 /dev/hda

在有些意况下得以接收写缓存:

·         写缓存能够在xfs上,而且保险电瓶专门的学问符合规律的情形下使用。假诺在/var/log
/messages上冒出以下音信就不可能运用写缓存:

o    Disabling
barriers, not supported with external log device

o    Disabling
barriers, not supported by the underlying device

o    Disabling
barriers, trial barrier write failed

以下意况就务须关闭写缓存:

·         若是你选拔了ext3文件系统

·         若是运用了LVM

·         假设您利用了软的RAID

·         要是选取了RAID有battery-backed-up memory

 

3.12 进度追踪

TokuDB有三个系统来追踪长运营语句:

·         Bluk
Load:当使用load data infile导入多量数目,使用show processlist命令能够查看见速度分为2部分,已不是提醒为:Inserted about 1000000 rows。其余一些是比例,提醒为Loading of data about
54% done。

·         扩充索引,当使用alter table恐怕create index命令创设索引,show processlist展现速度,会提示已经管理的行数。通过这么些纤弱来注解进程。和bulk
load相通,第一品级彰显行管理速度,第二品级展现百分比。

·         提交和注销,当提交可能撤回叁个职业,使用show
processlist,会评估职业操作管理。

 

3.13 迁移到TokuDB

为了吧表转化到TokuDB引擎,能够采纳alter table engine来订正,假使您想要从文件中程导弹入数据,那么使用load
data infile,不要使用mysqldump,因为有一点点慢。

 

4 TokuDB后台 ANALYZE TABLE

TokuDB有二个后台线程依照修正的评估来机关剖判表。

4.1 后台作业

后台作业调整是短暂的,借使在关服务的时候有后台作业运维,那么会被停止。当服务重启已经运转的都会被忽视,要求再行来,假诺手动调用ANALYZE
TABLE和后台作业冲突,那么后台作业会被吊销,可以因此表TOKUDB_BACKGROUND_JOB_STATUS查看后台作业是不是运转。

新的tokudb_analyze_in_background变量能够用来兑现调整时候ANALYZE TABLE是后台运维依然在前台。tokudb_analyze_mode用来调节ANALYZE TABLE的作为。

tokudb_analyze_mode变量用来兑现对ANALYZE
TABLE的主宰:

TOKUDB_ANALYZE_CANCEL:废除在一定表上任何运转的依然应调用的作业。

TOKUDB_ANALYZE_STANDAXC60D:使用已经存在解析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新总计表上的逻辑行而且更新当前的计数。

 

TOKUDB_ANALYZE_RECOUNT_ROWS 是新的体制,用来实施逻辑重算全数表中的行并且保存,作为表的评价值评估。那么些情势增添是为着从老版本进级的TokuDB难点,老的TokuDB只辅助物理行计数,而且未有一个对的的逻辑行计数。新创制的表或然分区起头以逻辑行,并且无需被重复总计除非一些边际条件形成逻辑计数变得不确切。那几个深入分析情势不会耳闻则诵基数计数。会依赖tokudb_analyze_in_background和tokudb_analyze_throttle。job运维后在安装变量不会影响当下job的运作。

 

废除任何后台线程,能够安装tokudb_analyze_mode=TOKUDBANALYZE_CANCEL并且在表上运维ANALYZE TABLE。

4.2 自动深入分析

为了达成后台的拆解深入分析和收集计数总结每一种表上都维护了叁个增量值,这几个值并非保留的,当服务重启就能够被设置为0.那几个记录了有着的写操作。当以此值超越了tokudb_auto_analyze设置的值,那么依照近来对话的安装会奉行多少个剖判。别的对于这几个表的分区就能告意气风发段落,除非这一个深入分析造成。当解析到位,值被安装为0,重新总计。

 

别的剖析产生,状态值都会被反馈到劳动。半时反转分析,也被完结,也正是说假诺超过八分之四的tokudb_analyze_time时间过去,可是还并未有解析到数据量的八分之四,那么剖析会重启,从最后一条数据起先往上解析,并且把解析结构丰盛到前面包车型大巴结果上。

 

对此小表,自动剖判可能每一遍改进都会进行。出发更是如下假如(table_delta
>= ((table_rows *tokudb_auto_analyze) / 100))那么就初始运营ANALYZE TABLE。要是顾客手动调用ANALYZE TABLE并且tokudb_auto_analyze被运维了同偶尔候未有冲突的后台作业,顾客运营的ANALYZE
TABLE会和增量值当先了上线同样,实现后会吧增量设置为0.

4.3 系统变量

tokudb_analyze_in_background:借使设置为on,那么任何analyze table都会在后台运转。

tokudb_analyze_mode:

    

TOKUDB_ANALYZE_CANCEL:撤销在特定表上任何运维的照旧应调用的课业。

TOKUDB_ANALYZE_STANDA中华VD:使用已经存在剖析算法。

TOKUDB_ANALYZE_RECOUNT_ROWS:重新计算表上的逻辑行何况更新当前的计数。

tokudb_analyze_throttle:表示当analyze
table的时候最大每秒访问的key

tokudb_analyze_time:会话变量支配解析操作开销的事件。

tokudb_auto_analyze:会话变量支配超越自动剖判的比值,写入操作到了那些比率就能够更新。

tokudb_cardinality_scale_percent:弱化或然加重索引恐怕表的基数性子,比如innodb写死百分之五十,在400行数据,37个唯风流浪漫值,公式如下:(200/40
*tokudb_cardinality_scale) / 100

4.4 information_schema相关表

INFORMATION_SCHEMA.TOKUDB_BACKGROUND_JOB_STATUS

5 TokuDB变量

具体看:

6 TokuDB Troubleshooting

6.1 获知难点

复制和binary log:

TokuDB补助binary log和复制,不过有个节制TokuDB,正是auto-increment成效的锁机制未有兑现,所以并发插入语句恐怕会促成不明确的,那么在slave上运维的时候会变成和master不相称,独有在依靠语句复制上才会时有产生。

在并未有索引可能索引是主键子集的表上使用REPLACE
INTO只怕INSERT IGNORE,tokudb_pk_insert_mode调节行是或不是被复制。

 

Uninformative error message

LOAD INFILE命令也许会产生错误,ELX570RO福特Explorer 1030
(HY000): Got error 1 from storage engine.新闻也会说是因为磁盘空间不足引致不常文件不能够创建。

 

Transparent Huge Pages

倘诺开发银行了transparent huge page,Tokudb不会运维。使用以下命令来剥夺:

#
echo never >
/sys/kernel/mm/redhat_transparent_hugepage/enabled

 

XA behavior vs. InnoDB

InnoDB会强制死锁就义,可是Tokudb不会。

6.2 TukoDB锁

TokuDB使用key range lock来贯彻串行事务,在事情进程中赢得,在工作截至时释放锁。

TokuDB把那么些数据结构寄放在锁树中。锁树存放了种种业务的range锁。其余锁树也保留了因为冲突没有被获取的锁。当职业退出,那么那个等待是锁也会被抽离。如若pengding的锁未有被付与,那么锁超时后也会脱离。

6.2.1 TOKUDB_TRX表

TOKUDB_TRX在INFORMATION_SCHEMA中,能够用一下方法和mysql顾客端关联:

SELECT
* FROM INFORMATION_SCHEMA.TOKUDB_TRX,

 
INFORMATION_SCHEMA.PROCESSLIST

 
WHERE trx_mysql_thread_id = id;

6.2.2 TOKUDB_LOCKS表

Tokudb_locks表在information_schema中隐含了授权了的TokuDB的职业中的锁。使用以下语句和客商端关联:

SELECT
id FROM INFORMATION_SCHEMA.TOKUDB_LOCKS,

 
INFORMATION_SCHEMA.PROCESSLIST

 
WHERE locks_mysql_thread_id = id;

6.2.3 TOKUDB_LOCK_WAITS表

Tokudb_lock_waits表也在information_schema中:

SELECT
* FROM INFORMATION_SCHEMA.TOKUDB_LOCK_WAITS;

6.3 引擎状态

具体看:

6.4 全局状态变量

具体看:

7 Percona TokuBackup

Percona tokubackup是六个开源的备份tokudb的三个热备工具。在备份期间不会锁定数据库。Tokubackup会获取系统写入文件的调用,并复制到备份目录中。

7.1 从binary安装

TokuBackup包蕴在percona server 5.7.10和未来的版本,安装能够行使ps_tokudb_admin脚本。

安装TokuBackup:

1.      运行ps_tokudb_admin –enable-backup增加preload-hotbackup选项到[mysqld-safe]下的my.cnf中。

2.      重启mysql服务

3.      运行ps_tokudb_admin –enable-backup安装tokubackup插件。

7.2 备份

备份的目录必需存在,能够写为空,并且归于mysql运行客商。风度翩翩旦目录被成立备份能够利用以下命令备份:

mysql>
set tokudb_backup_dir=’/path_to_empty_directory’;

7.3 还原

备份工具未有回复数据库的功力,要接纳rsync可能cp来还原工件。检查还原的文件和呼应的涉及和权限。举例采纳rsync来平复备份:

$
rsync -avrP /data/backup/ /var/lib/mysql/

校订全体者

$
chown -R mysql:mysql /var/lib/mysql

若是改变了某一个人tokudb数据目录或然Tokudb日志目录,那么要求独自的去设置。

$
rsync -avrP /data/backup/mysql_data_dir/ /var/lib/mysql/

$
rsync -avrP /data/backup/tokudb_data_dir/
/path/to/original/tokudb_data_dir/

$
rsync -avrP /data/backup/tokudb_log_dir/
/path/to/original/tokudb_log_dir/

$
chown -R mysql:mysql /var/lib/mysql

$
chown -R mysql:mysql /path/to/original/tokudb_data_dir

$
chown -R mysql:mysql /path/to/original/tokudb_log_dir

7.4 推荐配置

7.4.1 监察和控制进程

TokuBackup更新processlist的图景,呈现备份的速度,能够使用show
processlist查看。

7.4.2 消释源文件

能够通过正则表明式消释文件或许目录,设置在tokudb_backup_exclude会话变量中。假使源文件名负荷那么些正则表达式,那么就能被拔除。比如lost+found目录:

mysql>
SET tokudb_backup_exclude=’/lost\\+found($|/)’;

7.4.3 备份率阀值

可以内定备份的阀值,tokudb_backup_throttle会话等第变量。这一个变量表示每秒字节传输率。

7.4.4 约束备份目的

您能够界定本地目的目录,tokudb_backup_allowed_prefix系统变量。暗许是null,备份未有节制指标目录。参数是只读的只好通过my.cnf配置。

7.4.5 错误报告

Tokubackup使用2个变量来获得错误消息。Tokudb_backup_last_error,
tokudb_backup_laster_error_string。当tokubackup暴发一个不当,变量就能来得显影的错误代码和错误消息。

mysql>
SET tokudb_backup_dir=’/tmp/backupdir’;

ERROR
1231 (42000): Variable ‘tokudb_backup_dir’ can’t be set to the value
of ‘/tmp/backupdir’

 

mysql>
SELECT @@tokudb_backup_last_error;

+—————————-+

|
@@tokudb_backup_last_error |

+—————————-+

|                        
17 |

+—————————-+

 

mysql>
SELECT @@tokudb_backup_last_error_string;

+—————————————————+

|
@@tokudb_backup_last_error_string                 |

+—————————————————+

|
tokudb backup couldn’t create needed directories. |

+—————————————————+

7.4.6 限定和已知的难点

·         你必需关闭innodb异步io假若采纳tukobackup备份innodb表。不然就能够出现风姿罗曼蒂克致性错误。innodb_use_native_aio=0

·         假若急需还原到内定点,需求手动获取binary log
position。

·         事务存款和储蓄引擎会在备份还原后,首回运转会进行复原。

·         表使用非事务引擎在备份的时候不会锁定。所以最棒在备份的时候幸免表操作。

·         备份的时候指标目录必需存在,况且为空

·        
TokuBackup会一向备份datadir目录,选用性的备份tokudb_data_dir和tokudb_log_dir,和binary log目录。如若不在datadir中那么须要单独备份。

·         不帮忙别的目录结构,innodb,myisam和其它部存款和储蓄器储引擎必需在datadir上边。

·         Buzhichi
symbolic links

·         不备份配置文件

·         不备份datadir 外的表空间。

·         当备份的时候在举办optimize table只怕alter table tablespace,那么就不能恢复生机备份。

·         不帮助增量备份。

8 FAQ

具体看:

 

相关文章