暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pt-heartbeat复制延迟监控

原创 谭磊Terry 恩墨学院 2022-08-31
920

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
成功返回最新同步延迟数据

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论