设为首页 收藏本站
查看: 1239|回复: 0

[经验分享] seconds_behind_master监控复制延迟的不足及pt-heartbeat改进方法

[复制链接]

尚未签到

发表于 2015-11-21 09:09:59 | 显示全部楼层 |阅读模式
seconds_behind_master含义及不足
  seconds_behind_master的值是通过将salve服务器当前的时间戳与二进制日志中的事件的时间戳相比得到的,所以只有执行事件时才会报告延迟。
  1.1  如果备库复制线程没有运行,就会报延迟为null。
  1.2  一些错误比如网络不稳定可能导致复制中断或停止复制线程,但是seconds_behind_master将显示为0,而不是显示错误
  1.3  即使备库线程正在运行,备库有时候可能无法计算延时,如果发生这种情况,备库会报0或者null。
  1.4  一个大事务可能会导致延迟波动,例如一个事务更新数据长达1个小时,最后提交。这条更新语句将比它实际发生时间要晚一个小时才记录到二进制日志中,当备库执行这          条语句时,会临时报告备库延迟1小时,然后又很快变为0。
  详细请参考<高性能MySQL 复制章节>
  

pt-heartbeat原理
  

  改进的做法就是使用percona toolkit工具包的pt-heartbeat,工作原理如下:
2.1  在master上创建一张heartbeat表,按照一定的时间频率更新该表的字段,主要就是向该表写入当前的时间戳

2.2  连接到slave上检查该表的时间记录,和运行pt-heartbeat的当前系统时间进行比较,得出时间的差异,这个时间差异就是复制延迟

注1:这里的2中的系统时间并不一定是slave的系统时间,如果pt-heartbeat的复制监控脚本运行在master上,那么当前系统时间就是master的当前系统时间,这时就不需要严&#26684;同步master服务器和slave服务器的时间一致了。
注2:这里的创建的heartbeat表必须在复制同步下的库,有些教材都写了test库,但有时我们在复制配置中过滤了test库的复制,需要注意这一点

pt-heartbeat参数说明
  

  pt-heartbeat用法&#26684;式如下,详细的用法可运行pt-heartbeat --help查看,最主要的几个参数介绍如下
Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
--update|--monitor|--check|--stop这四个参数必须选一个且仅选一个,--update表示每隔默认的秒数更新master库上heartbeat表的时间戳,--monitor表示每隔默认秒都监控延迟状况,--check表示只监控一次就退出,--stop表示停止更新时间戳的进程

--daemonize  后台执行
--file 【--file=output.txt】 打印--monitor最新的记录到指定的文件,很好的防止满屏幕都是数据的烦恼。
--frames 【--frames=1m,2m,3m】在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个,如:--frames=1s,多个用逗号隔开。
--interval 检查、更新的间隔时间。默认是见是1s。最小的单位是0.01s,最大精度为小数点后两位,因此0.015将调整至0.02。
--log 开启daemonized模式的所有日志将会被打印到制定的文件中。
--monitor 持续监控从的延迟情况
--master-server-id 指定主的server_id
  --recurse 多级复制的检查深度。模式M-S-S...不是最后的一个从都需要开启log_slave_updates,这样才能检查到。
  

pt-heartbeat监控复制延迟及测试
  

  典型的步骤如下
4.1 在master服务器上运行如下命令,这里的ip,user等信息均为master mysql的信息。
      pt-heartbeat -D mydb --update -uroot -p 123456 -P 3306 -h 127.0.0.1 --create-table --daemonize
  

  4.2  在master服务器上运行如下命令,这里的ip,user等信息均为slave mysql的信息,然后指定该master-server-id,
  pt-heartbeat -D mydb --monitor -u y -p 123456 -P 3306 -h 10.0.11.244 --master-server-id 101
  4.3  这时我们在master上插入大量数据,比如一个insert into select,可看到监控界面上延迟&#20540;越来越大最后又慢慢变小,具体测试代码略。
  4.4  这时我们在slave上stop slave,观察复制延迟情况,可看到延迟越来越大
DSC0000.jpg

  4.5  这时我们重新start slave,可观察到延迟再次变小
DSC0001.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141710-1-1.html 上篇帖子: heartbeat2.1.4 实现监控应用服务(httpd)具体步骤 下篇帖子: Centos6.2下一键安装heartbeat
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表