阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

pt-heartbeat使用实践记录

362次阅读
没有评论

共计 4506 个字符,预计需要花费 12 分钟才能阅读完成。

使用 pt-heartbeat 这个工具检测主从延迟时间,决定自己使用 pt-heartbeat 这个工具,顺便在此记录一下。

工作原理:

1,在主上创建一张 heartbeat 表,按照一定的时间频率更新该表的字段(把时间更新进去)。

2,连接到从上检查复制的时间记录,和从库的当前系统时间进行比较,得出时间的差异。

 使用方法:

pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop

在主库上开启守护进程来更新 linuxidc.heartbeat 表:

pt-heartbeat -D linuxidc --update -h master-server --daemonize

 监控从的延迟情况:

pt-heartbeat -D linuxidc --monitor -h slave-server   #一直执行,不退出
pt-heartbeat -D linuxidc--check h=slave-server       #执行一次就退出

常用参数:

注意:需要指定的参数至少有 --stop,--update,--monitor,--check。其中 --update,--monitor 和 --check 是互斥的,--daemonize 和 --check 也是互斥。--ask-pass
隐式输入 MySQL 密码

--charset
字符集设置

--check
检查从的延迟,检查一次就退出,除非指定了--recurse 会递归的检查所有的从服务器。--check-read-only
如果从服务器开启了只读模式,该工具会跳过任何插入。--create-table
在主上创建心跳监控的表,如果该表不存在。可以自己建立,建议存储引擎改成 memory。通过更新该表知道主从延迟的差距。CREATE TABLE heartbeat (ts                    varchar(26) NOT NULL,
  server_id             int unsigned NOT NULL PRIMARY KEY,
  file                  varchar(255) DEFAULT NULL,    -- SHOW MASTER STATUS
  position              bigint unsigned DEFAULT NULL, -- SHOW MASTER STATUS
  relay_master_log_file varchar(255) DEFAULT NULL,    -- SHOW SLAVE STATUS
  exec_master_log_pos   bigint unsigned DEFAULT NULL  -- SHOW SLAVE STATUS
);
heratbeat 表一直在更改 ts 和 position, 而 ts 是我们检查复制延迟的关键。--daemonize
执行时,放入到后台执行

--user
-u,连接数据库的帐号

--database
-D,连接数据库的名称

--host
-h,连接的数据库地址

--password
-p,连接数据库的密码

--port
-P,连接数据库的端口

--socket
-S,连接数据库的套接字文件

--file【--file=output.txt】打印--monitor 最新的记录到指定的文件,很好的防止满屏幕都是数据的烦恼。--frames【--frames=1m,2m,3m】在 --monitor 里输出的[] 里的记录段,默认是 1m,5m,15m。可以指定 1 个,如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)。--interval
检查、更新的间隔时间。默认是见是 1s。最小的单位是 0.01s,最大精度为小数点后两位,因此 0.015 将调整至 0.02--log
开启 daemonized 模式的所有日志将会被打印到制定的文件中。--monitor
持续监控从的延迟情况。通过--interval 指定的间隔时间,打印出从的延迟信息,通过 --file 则可以把这些信息打印到指定的文件。--master-server-id
指定主的 server_id,若没有指定则该工具会连到主上查找其 server_id。--print-master-server-id--monitor 和 --check 模式下,指定该参数则打印出主的 server_id。--recurse
多级复制的检查深度。模式 M -S-S... 不是最后的一个从都需要开启 log_slave_updates,这样才能检查到。--recursion-method
指定复制检查的方式, 默认为 processlist,hosts。--update
更新主上的心跳表。--replace
使用--replace 代替 --update 模式更新心跳表里的时间字段,这样的好处是不用管表里是否有行。--stop
停止运行该工具(--daemonize),在 /tmp/ 目录下创建一个“pt-heartbeat-sentinel”文件。后面想重新开启则需要把该临时文件删除,才能开启(--daemonize)。--table
指定心跳表名,默认 heartbeat。

测试环境: 

Master  192.168.0.10:3306
Slave   192.168.0.20:3306

1,在主上运行:–daemonize表示守护进程,后台运行。

[root@linuxidc_192.168.0.10 ~]# pt-heartbeat --user=root --ask-pass --host=127.0.0.1 --create-table -D linuxidc --interval=1 --update --replace --daemonize
Enter password: 
[root@linuxidc_192.168.0.10 ~]#
[root@linuxidc_192.168.0.10 ~]# pgrep -fl pt-heartbeat
4156 perl /usr/bin/pt-heartbeat -D linuxidc --table=heartbeat --create-table --update -h 127.0.0.1 -uroot --ask-pass --daemonize
[root@linuxidc_192.168.0.10 ~]#

3.在主上运行监测复制延迟

[root@linuxidc_192.168.0.10 ~]# pt-heartbeat -D linuxidc --table=heartbeat --monitor -h 192.168.0.20
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 表示从没有延迟。[ 0.00s, 0.00s, 0.00s ] 表示 1m,5m,15m 的平均值。可以通过–frames 去设置。

我们这里看见复制没有延迟,那么我们可以使用压力工具测试一下。在主库创建测试数据库 sbtest;

mysql> create database sbtest;
Query OK, 1 row affected (0.00 sec)

mysql>

开始生成 100w 记录的数据

[root@linuxidc_192.168.0.10 ~]#  sysbench --test=oltp --oltp-table-size=1000000 --oltp-read-only=off --init-rng=on --num-threads=16 --max-requests=0 --oltp-dist-type=uniform --max-time=1800 --mysql-user=root --mysql-socket=/tmp/mysqld.sock --mysql-password=123456 --db-driver=mysql --mysql-table-engine=innodb --oltp-test-mode=complex prepare
sysbench 0.4.10:  multi-threaded system evaluation benchmark

Creating table 'sbtest'...
Creating 1000000 records in table 'sbtest'...

再次检测复制延时:

[root@linuxidc_192.168.0.10 ~]# pt-heartbeat -D linuxidc --table=heartbeat --monitor -h 192.168.0.20
28.21s [0.47s,  0.09s,  0.03s ]
28.72s [0.95s,  0.19s,  0.06s ]
29.38s [1.44s,  0.29s,  0.10s ]
29.13s [1.92s,  0.38s,  0.13s ]
30.85s [2.44s,  0.49s,  0.16s ]
31.04s [2.96s,  0.59s,  0.20s ]
29.84s [3.45s,  0.69s,  0.23s ]
31.24s [3.97s,  0.79s,  0.26s ]
32.20s [4.51s,  0.90s,  0.30s ]
32.96s [5.06s,  1.01s,  0.34s ]
33.82s [5.62s,  1.12s,  0.37s ]
34.15s [6.19s,  1.24s,  0.41s ]

立马发现效果了哦 ^_^

我们还可以使用 –check 监测一次就退出:

[root@linuxidc_192.168.0.10 ~]# pt-heartbeat -D linuxidc --table=heartbeat --check -h 192.168.0.20
0.00
[root@linuxidc_192.168.0.10 ~]#

2,如何关闭主上面执行的后台进程。可以用参数 –stop 去关闭:

[root@linuxidc_192.168.0.10 ~]# pt-heartbeat --stop
Successfully created file /tmp/pt-heartbeat-sentinel
[root@linuxidc_192.168.0.10 ~]#

这样就把在主上开启的进程杀掉了,后续要继续开启后台进行的话,需要把/tmp/ptheartbeatsentinel 文件删除,否则启动不了。

总结:

      通过 pt-heartbeart 工具可以很好的弥补默认主从延迟的问题,但需要搞清楚该工具的原理。而默认的 Seconds_Behind_Master 值是通过将服务器当前的时间戳与二进制日志中的事件时间戳相对比得到的,所以 只有在执行事件时才能报告延时 。备库 复制线程没有运行 ,也会报延迟 null。还有一种情况: 大事务,一个事务更新数据长达一个小时,最后提交。这条更新将比它实际发生时间要晚一个小时才记录到二进制日志中。当备库执行这条语句时,会临时地报告备库延迟为一个小时,执行完后又很快变成 0。

更多详细资料请参考:

http://www.percona.com/doc/percona-toolkit/2.1/pt-heartbeat.html

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135586.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4506字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994944
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...