mysql的tokudb引擎可以解决数据库占用硬盘空间大的问题,虽然舍弃了部分的读写应能,但因为我们的myql磁盘都是ssd的,所以这都不是事。 tokudb有几个压缩比率,我们这边2.8个T的innodb,换用tokudb压缩db后才350G左右。

文章写的不是太严谨,后期会不断更新修改补充该文章,标注下原文地址:

http://xiaorui.cc/?p=2457

这边就简单说下,tokudb引擎的主从复制是怎么建立的? 在做mysql tokudb主从复制之前,我还以为会有些麻烦,真正做了后发现和innodb的做法是一样一样的。  因为都是通过binlog来进行主从传输,而binlog就是复制了被执行的sql语句。 

Tokudb做主从不能像innodb那样,可以选择innobackupex Xtrabackup备份。但是Tokudb就没有这种热备份,并且记录pos file偏移量的工具  percona的企业版貌似是有这样的一个组件。 

我这里选用的是Percona with tokudb的版本.

主:

在my.cnf配置一个server-id

SET TOKUDB_CHECKPOINT_LOCK=ON;

开始拷贝TokuDB的数据文件(不包含日志文件),或者索性直接都copy mysql目录也是可以的

FLUSH TABLES WITH READ LOCK;   #锁库锁表

show master status 记录binlog位置,拷贝最新的binlog和TokuDB的日志文件(*.tokulog)

UNLOCK TABLES;

SET TOKUDB_CHECKPOINT_LOCK=OFF;


TOKUDB_CHECKPOINT_LOCK,它的作用是允许拿到checkpoint锁,此时TokuDB的checkpoint会一直block到该锁释放(执行前要把tokudb_checkpoint_on_flush_logs关掉),目的是防止拷贝TokuDB数据文件的过程中做sharp checkpoint(注意:由于不做checkpoint,TokuDB的日志文件会逐渐增多),从而导致数据文件内部不一致(已拷贝的文件被修改)。
整个热备过程中,只有步骤4是阻塞写的,但耗时较短。

从:

把备份出来的数据库文件拖过来,然后在my.cnf配置一个跟master不一样的server-id就可以了. 然后我们需要在mysql建立主从复制连接。 

这里再简单说下tokudb的备份方案,看了下资料现在的备份方案我这么几种。

1.  利用lvm磁盘进行mysql备份,简单高效,缺点是需要对于lvm的掌握。 

2.  使用percona的hot backup插件, 缺点是不怎么好用, 没有官方介绍的牛叉。  https://github.com/percona/tokudb-backup-plugin

3.  我现在用的方法,在从上进行锁表操作,然后进行copy数据

END….



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

一次ubuntu安装MariaDB(tokudb引擎)的经过

首先说明下,为什么会有这样的事情发生? 没事测试tokudb干嘛?  我现在还有一个身份是我们组的首席DBA….  太坑爹了…   看过我...

阅读全文