pt-heartbeat
pt-heartbeat的工作原理通过使用时间戳方式在主库上更新特定表,然后在从库上读取被更新的时间戳然后与本地系统时间对比来得出其延迟。用于mysql复制延迟监控
认识Seconds_Behind_Master
show slave status中的"Seconds_Behind_Master"值是通过将服务器当前的时间戳与二进制日志中的事件时间戳相对比得到的,所以只有在执行事件时才能报告延时。备库复制线程没有运行,也会报延迟null。还有一种情况:大事务,一个事务更新数据长达一个小时,最后提交。这条更新将比它实际发生时间要晚一个小时才记录到二进制日志中。当备库执行这条语句时,会临时地报告备库延迟为一个小时,执行完后又很快变成0。
创建好pt-heartbeat依赖的数据库
create database heartbeat;
master节点运行时间戳更新检测
pt-heartbeat -u root -p wtc.com -D heartbeat -h 127.0.0.1 --create-table --update --daemonize
update: 定时更新表字段'ts'时间戳,可结合"--interval"参数使用
--create-table: 若果第一次执行且未创建表需指明
在master节点监控slave复制延迟
[root@iZ2ze2yo6lh2hmy6pm4wafZ ~]# pt-heartbeat -h 39.105.101.140 -u root -p wtc.com -P 38383 -D heartbeat --monitor --master-server-id 1
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.07s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
0.01s [ 0.01s, 0.00s, 0.00s ]
实施延迟 1min 5min 15min
在slave节点监控本机复制延迟
[root@tcandyj ~]# pt-heartbeat -h 127.0.0.1 -u root -p wtc.com -D heartbeat --monitor
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
0.00s [ 0.00s, 0.00s, 0.00s ]
非master节点运行不需要指定特点参数--master-server-id
常用参数说明
--update
更新master中heartbeat表的记录
--log
输出保存到一个文件中,保留多条记录
--file
输出保存到一个文件中,只保留一条记录
--check
检查从的延迟,检查一次就退出
--monitor
--monitor是持续输出的,而--check是检测一次即退出 --monitor可与--file参数搭配,而--check与--file参数搭配无效持续监控从的延迟情况
--frames
在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个,如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)
--interval
检查、更新的间隔时间。默认是见是1s
--master-server-id
指定master的server_id