mysql replication 主从间如何延迟
猛然间听到这样的问题,还是很惊讶的,因为我们讨论最多的是如何避免replication复制延迟,特别是在读写分离的环境下,主库或从库压力大的情况下,master写入的数据很难快速到slave,如这样的架构一主多从 ,特别是现在一些电子商务类的网上商城。所以听到要
猛然间听到这样的问题,还是很惊讶的,因为我们讨论最多的是如何避免replication复制延迟,特别是在读写分离的环境下,主库或从库压力大的情况下,master写入的数据很难快速到slave,如这样的架构一主多从 ,特别是现在一些电子商务类的网上商城。所以听到要replication间人为延迟 如一个小时或两个小时这样的需求,很是惊讶。
目前mysql 还没有实现这样的功能,google了一把,目前说是mysql 5.6已经有了这功能,而且也有第三方工具来实现,详细的可以查看这哥们的博客 :
http://www.db110.com/?p=3871 上面介绍的比较详细,我摘抄如下:
pt-slave-delay
mysql同步在快速的网络中是毫秒级的,如果有误操作,从库也很快变更了,对于一些频繁进行,不是经过严格测试的升级,可能带来风险.
可考虑配置一个延迟复制的副本,以改善故障情况下的可恢复性.
mysql 5.6版本已经支持延迟复制,如果5.1版本,可以用percona工具出品的一个工具pt-slave-delay
pt-slave-delay – Make a MySQL slave server lag behind its master.
下载: wget percona.com/get/pt-slave-delay
安装: 略
语法: pt-slave-delay [OPTION...] SLAVE-HOST [MASTER-HOST]
选项值一般可以用默认的. 默认是延迟1小时.
如: pt-slave-delay –delay 1m –interval 15s –run-time 10m slavehost
运行这个工具10分钟(默认是永久运行的) . 从库保持一直滞后主库1分钟,每次检查间隔15秒,那么理论上是延迟1分钟15秒.
这个工具是低风险的.
它的原理是: 检查主库的日志到了哪里了(可以用show slave status 命令查看relay日志) , 对比已经应用的日志, 就知道延迟的时间了.
每隔1分钟检查(默认),不断启动,关闭 replication SQL thread 来保持主从一直延时固定的时间.
如果正在运行这个工具,那么 Ctrl-C 退出后,它是友好的退出的,意即他会启动复制sql线程.
生产环境示例:
./pt-slave-delay u=xxxx,S=/tmp/mysql.sock,p=d1\\ccc(\* –log /home/mysql/scripts/log/delay.log –daemonize
当时第一反应是目前mysql 无法实现,后来想了想,只能认为的写程序去控制,比对两个库日志读的是否一致,写脚本来控制了,大概就这样的思路。
下一篇: php基础(重写)
推荐阅读
-
mysql replication 主从间如何延迟
-
MySQL互为主从Replication
-
MySQL Replication(主从服务器)配置实例
-
MySQL的主从复制Replication之MyIsam和InnoDB数据复制发布
-
MySQL主从数据库同步延迟问题解决
-
使用MySQL Proxy解决MySQL主从同步延迟
-
mysql5.5 master-slave(Replication)主从配置_MySQL
-
数据库mysql主从复制的原理和如何搭建主从复制
-
缓解MySQL写入压力和主从延迟的尝试
-
如何正确衡量主从延迟时间(关于Seconds_Behind_Master和pt-heartbeat)