说起MySQL主从延迟,相信大家都不陌生,关于主从延迟的监控,可以通过命令SHOW SLAVE STATUS去实现,但是这种方式在某些情况下并不是那么可靠(具体原因这里不展开介绍);因此,percona推出了一个更加可靠的监控工具,也就是今天要给大家介绍的pt-heartbeat。
pt-heartbeat,主要有两部分组成。第一部分是定期连接上主库,更新心跳表的时间戳;第二部分是定期连接上从库,获取心跳表的时间戳,并与操作系统时间对比计算时间差,从而得出主从延迟大小。接下来我们也可以通过general log来观察一下具体实现原理。
(1)主库:获取主从状态信息,并更新心跳表
2021-05-18T17:00:33.000477+08:00 19 Query SHOW MASTER STATUS 2021-05-18T17:00:33.000646+08:00 19 Query SHOW SLAVE STATUS 2021-05-18T17:00:33.000956+08:00 19 Query UPDATE `percona_schema`.`heartbeat` SET ts='2021-05-18T17:00:33.000850', file='mysql-bin.000083', position='332025', relay_master_log_file='mysql-bin.000085', exec_master_log_pos='191163241' WHERE server_id='571' 2021-05-18T17:00:34.000333+08:00 19 Query SHOW MASTER STATUS 2021-05-18T17:00:34.000545+08:00 19 Query SHOW SLAVE STATUS 2021-05-18T17:00:34.000877+08:00 19 Query UPDATE `percona_schema`.`heartbeat` SET ts='2021-05-18T17:00:34.000740', file='mysql-bin.000083', position='332716', relay_master_log_file='mysql-bin.000085', exec_master_log_pos='191163913' WHERE server_id='571'
(2)从库:BEGIN ... COMMIT是在回放日志,然后获取心跳表的时间戳
2021-05-18T17:00:01.009506+08:00 3 Query BEGIN 2021-05-18T17:00:01.009654+08:00 3 Query COMMIT /* implicit, from Xid_log_event */ 2021-05-18T17:00:01.500351+08:00 16 Query SELECT ts/*!50038, @@hostname AS host*/, server_id FROM `percona_schema`.`heartbeat` WHERE server_id='571' LIMIT 1 2021-05-18T17:00:02.022146+08:00 3 Query BEGIN 2021-05-18T17:00:02.022311+08:00 3 Query COMMIT /* implicit, from Xid_log_event */ 2021-05-18T17:00:02.500345+08:00 16 Query SELECT ts/*!50038, @@hostname AS host*/, server_id FROM `percona_schema`.`heartbeat` WHERE server_id='571' LIMIT 1
(1)基本语法
pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
(2)常见选项
--host:-h,IP地址 --port:-P,端口 --socket:-S,套接字文件 --user:-u,用户名 --password:-p,密码 --charset:-A,字符集 --database:-D,数据库 --table:表名 --ask-pass:提示手动输入密码 --daemonize:后台运行 --file:指定存储最新主从延迟信息的文件 --log:指定存储所有主从延迟信息的文件 --create-table:创建心跳表 --create-table-engine:指定心跳表的存储引擎 --[no]insert-heartbeat-row:如果心跳表没有记录,指定是否插入一条记录,默认为是 --dbi-driver:指定连接的数据库类型,目前支持mysql和pg --frames:指定主从延迟平均值的统计时间跨度,默认是1m,5m,15m --update:持续更新心跳表 --replace:使用replace替代update --monitor:持续检测主从延迟 --check:检测主从延迟一次,然后退出 --check-read-only:检测主从延迟一次(在实例read_only=on的情况下,该工具跳过任何insert操作) --stop:停止运行 --run-time:运行时间,默认永久 --interval:update/monitor/check的时间间隔 --read-only-interval:check-read-only的时间间隔 --master-server-id:指定主节点的server id --print-master-server-id:打印主节点的server id --recurse:递归查找从节点信息 --recursion-method:递归查找从节点的方法,默认processlist,hosts(可选processlist:HOW PROCESSLIST,hosts:SHOW SLAVE HOSTS,none:Do not find slave) --slave-user:指定从节点的连接用户 --slave-password:指定从节点的连接用户密码 --fail-successive-errors:指定连接失败多少次后,该工具退出
(3)DSN选项
h:IP地址 P:端口 S:套接字文件 u:用户名 p:密码 A:字符集 D:数据库 t:表
(1)主库
$ pt-heartbeat h=10.1.4.9,P=10057,u=test,p=xxx --database percona_schema --table heartbeat --create-table --update --daemonize
(2)从库:
$ pt-heartbeat h=10.1.4.5,P=10057,u=test,p=xxx --database percona_schema --table heartbeat --print-master-server-id --monitor 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571 0.00s [ 0.00s, 0.00s, 0.00s ] 571
pt-heartbeat这个工具,可以更加准确地监控主从延迟,建议大家尝试用一下。
TOP云 (west.cn)12月20日消息,近日工业品B2B平台“好工品”对外宣布已经完成P...
阿里云服务器产品已经成为大部分上云用户购买云服务器时的首选,由于用户的上云...
Windows操作系统的裸金属服务器在创建时只能选择密钥鉴权方式,想使用密码方式登...
一.推荐得好礼,时长免费拿! 点击查看活动 1、活动对象: 阿里云实名认证用户 2...
说起数据分析的必备技能,就不得不提一个很火的词语,那就是数据可视化,究竟什...
数据科学是截至近年来技术领域中很具热度的方向之一。如果您拥有数据科学或者相...
随着前端项目不断扩大,浏览器渲染的压力变得越来越重。配置好一点的计算机可以...
云服务器 怎么迁移网站?在 云服务器 上的网站迁移之前,需要准备网站迁移前的相...
云在资源速度和规模方面提供了优势,但是安全性仍然是银行的症结所在。 数字银行...
本文作者 平头哥玄铁处理器架构团队 一、RISC-V架构起源 RISC-V架构是一种开源的...