关于Percona tokudb引擎的主从复制同步文档

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建立主从复制连接。 

CHANGE MASTER TO
  MASTER_HOST='主的ip地址',
  MASTER_USER='账号',
  MASTER_PASSWORD='密码',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000072',
  MASTER_LOG_POS=131451465,
  MASTER_CONNECT_RETRY=10;

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

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

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

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

END….


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注