percona-toolkit的工具pt-heartbeat
它的监控原理是先在主库创建一张heartbeat表,表中有时间戳字段。主库中pt-heartbeat的update线程会在指定时间间隔更新时间戳,而从库上的pt-heartbeat的monitor线程会检查复制的心跳记录,这个记录就是主库修改的时间戳。然后和当前系统时间相比,得出差异,差异值就是延迟的时间大小。
注意:实施监控之前,一定要确保主从的时间要同步。
cd /app/percona-toolkit-3.0.3/bin
单独创建heartbeat用户,赋予percona库的访问权限
create user ‘heartbeat’@’%’ identified by ‘Cy58@it’;
grant all on percona.* to ‘heartbeat’@’%’;
grant replication slave,replication client on . to ‘heartbeat’@’%’;
flush privileges;
或者将percona库的访问权限直接赋予现在的复制用户replic(replic_33) repluser(cy58@it)
grant all on percona.* to ‘repluser’@’%’;
flush privileges;
show grants for ‘heartbeat’@’%’;
(1) 首先在主库上创建heartbeat表,并通过–update执行时间戳更新
pt-heartbeat --user=heartbeat --password=Cy58@it --master-server-id=11 -S /xfjrdb/xfjrdb_28.sock --database percona --create-table --update --daemonize
pt-heartbeat --user=repluser --password=cy58@it --master-server-id=101703306 -S /xfjrdb/xfjrdb70.sock --database percona --create-table --update --daemonize
(2)从库监控延迟
后台持续执行
pt-heartbeat --user=root --password=Abc1234% --master-server-id=101703306 -S /xfjrdb/xfjrdb77.sock --database percona --monitor --print-master-server-id --daemonize --log=/tmp/slave.lag.log
./pt-heartbeat --user=heartbeat --password=Cy58@it --master-server-id=11 -h 162.16.5.29 -P 3307 --database percona --monitor --print-master-server-id --daemonize --log=/tmp/slave.lag.log
#单次查看从库上的延迟情况
./pt-heartbeat --user=heartbeat --password=Cy58@it --master-server-id=11 -S /xfjrdata/xfjrdb_29.sock --database percona --check --print-master-server-id
./pt-heartbeat --user=heartbeat --password=Cy58@it --master-server-id=11 -h 162.16.5.29 -P 3307 --database percona --check --print-master-server-id
(3)停止主库的pt-heartbeat进程
pt-heartbeat --user=repluser --password=cy58@it --master-server-id=101703306 -S /xfjrdb/xfjrdb70.sock --stop
rm -rf /tmp/pt-heartbeat-sentinel
(4) 重新启动主库的pt-heartbeat进程
pt-heartbeat --user=repluser --password=cy58@it --master-server-id=101703306 -S /xfjrdb/xfjrdb70.sock --database percona --create-table --update --daemonize --interval=2
利用Zabbix监控Mysql主从同步
1、使用pt-heartbeat 的–check选项参数,可以返回当前从库的同步延迟数据
[root@push-5-221 zabbix]# pt-heartbeat --user=repluser --password=cy58@it -h100.64.101.77 --port=3306 -D percona --check
0.00
[root@push-5-221 zabbix]#
2、利用这个返回的延迟数,可以自定义一个zabbix监控项
[root@push-5-221 ~]# vim /usr/local/zabbix/conf/zabbix_agentd.conf
在zabbix_agentd.conf配置文件中添加一个监控项
UserParameter=mysql.slave.heartbeat_seconds,pt-heartbeat --user=repluser --password=cy58@it -h100.64.101.77 --port=3306 -D percona --check
3、启动zabbix_agent服务,使新加监控项生效
[root@push-5-221 ~]# killall zabbix_agentd
[root@push-5-221 ~]# zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
[root@push-5-221 ~]#
4、在zabbix服务器端利用zabbix_get命令检验监控项
[root@zabbix_server mysh]# zabbix_get -s 100.64.101.77 -p 10055 -k “mysql.slave.heartbeat_seconds”
0.00
成功返回最新同步延迟数据




