pt-heartbeat 监控 MySQL主从延迟

以一秒的频率去更新这个的记录并把当前时间写入到heartbeat表中,因为主从的关系,从库也会有这个表,从库也会不停的更新字段,通过从库的ts字段减去主库的ts字段,就得出了主从延迟的实时时间。
perl Makefile.PL PREFIX=/home/mysql/pt # 如果不写路径,默认安装到/usr/local/bin make make test make install
如何使用:
1)、在主库创建 heartbeat 表每秒更新这个时间戳
./pt-heartbeat --user=root --password=123456 --host=127.0.0.1 --port=3006 --create-table -D heartbeat --interval=1 --update --replace --daemonize
--daemonize:意思是后台运行,可以先不用这个变量,看一下这个命令执行是否正确
--user=root --password=123456 --host=127.0.0.1 -D test 主库的mysql连接信息和heartbeat表存放的数据库
--update 更新主的heartbeat表,这个参数是后台进程必须的参数也可以用--replace替代
--replace 使用replace替换--UPDATE操作
2)、监控与从库的延迟
./pt-heartbeat -D heartbeat --table=heartbeat --master-server-id=1 --monitor -h127.0.0.1 -uroot -p123456 -P3006 --interval=1
--master-server-id=129 是主库的server-id,不写这个参数也是可以的
-h 192.168.88.130 -uroot -p123456 从机的信息
--monitor 监控从服务器的参数选项
监控结果如下图所示:
第一列是实时延迟,第二列是1分钟延迟,第三列是5分钟延迟,第四列是15分钟延迟 。因为笔者测试的环境没有搭建主从,测单机 mysql 到他自身的延迟,所以都是0
其他参数:
Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop 其中--update, --moniter,--check,--stop都是单独使用的,并且--update, --monitor, and --check are mutually exclusive --daemonize and --check are mutually exclusive.他们之间还是存在互斥。 Options: --ask-pass 使用密码进行mysql连接时给予提示 --charset=s -A 默认的字符选项 --check 执行一次从库的监控就结束 --check-read-only 如果是只读的服务器那么使用该选项会保持插入 --config=A 使用逗号分隔,如果指定了,那么该参数作为命令行的第一个选项 --create-table 如果表不存在创建表heartbeat --daemonize 创建后台的更新shell --database=s -D 指定连接的数据库 --dbi-driver=s Specify a driver for the connection; mysql and Pg are supported (default mysql) --defaults-file=s -F 通过提供的文件进行mysql连接 --file=s 输出最新的 --monitor监控信息到指定的文件 --frames=s 设置时间周期(default 1m,5m,15m) --help 显示帮助信息 --host=s -h 指定连接的host --[no]insert-heartbeat-row 在使用--tables的时候默认是插入一条记录到表heartbeat前提是表中不存在该记录行 --interval=f 指定更新和监控heartbeat表的频率默认是1S --log=s 当使用daemonized进行后台更新操作时输出所有的信息到指定的该文件 --master-server-id=s 指定主的server-id --monitor 监控从服务器的参数选项 --password=s -p 指定密码 --pid=s 创建pid文件 --port=i -P 指定连接时使用的端口 --print-master-server-id 打印输出master-server-id --recurse=i Check slaves recursively to this depth in --check mode --recursion-method=a Preferred recursion method used to find slaves ( default processlist,hosts) --replace 使用replace替换--UPDATE操作 --run-time=m 指定监控的时长,单位有: s=seconds, m=minutes, h=hours, d=days; 如果比指定默认是以秒为单位一直监控下去 --sentinel=s Exit if this file exists (default /tmp/pt- heartbeat-sentinel) --set-vars=A Set the MySQL variables in this comma-separated list of variable=value pairs --skew=f 指定执行从库检查的延时时长默认是0.5 --socket=s -S 指定连接时使用的socket文件 --stop 停止后台更新进程并生成--sentinel指定的文件 --table=s 指定更新的表(默认是heartbeat) --update 更新主的heartbeat表,这个参数是后台进程必须的参数也可以用--replace替代 --user=s -u 指定用户名 --utc 忽略系统时间仅使用UTC --version 显示版本信息 --[no]version-check Check for the latest version of Percona Toolkit, MySQL, and other programs (default yes)
官方手册:https://www.percona.com/doc/percona-toolkit/LATEST/pt-heartbeat.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言