设为首页 收藏本站
查看: 587|回复: 0

[经验分享] pt-heartbeat监控mysql主从复制延迟

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-18 09:55:01 | 显示全部楼层 |阅读模式
虽然自带的show slave  status\G;输出的seconds_behind_master列理论上显示了备库的延时,但是由于各种原因并不总是很正确,所以我们使用percona toolkit的一个工具pt-heartbeat来监控

一、pt-hearbaet的原理:

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

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

二、使用方法:

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




三、常用参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
注意:需要指定的参数至少有 --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。





四、测试环境
1
2
Master  192.168.2.22:3306
Slave   192.168.2.23:3306




1,首先添加heartbeat表
1
2
mysql> create database heartbeat;
Query OK, 1 row affected (0.00 sec)



1
2
[iyunv@mysql-master data]#pt-heartbeat --user=root --password=123456
-S /tmp/mysql.sock -D heartbeat  --master-server-id=1  --create-table --update



wKiom1aYrHSTIYHAAAApZdMA_Bo824.jpg




2,在主库上运行: --daemonize 表示守护进程,后台运行。
1
2
3
4
5
6
7
8
[iyunv@mysql-master ~]#pt-heartbeat --user=root --ask-pass --host=127.0.0.1  --create-table
-D heartbeat  --interval=1 --update --replace --daemonize
Enter password:

  检查是否正常启动:
[iyunv@mysql-master ~]# pgrep -fl pt-heartbeat
5406 perl /usr/local/bin/pt-heartbeat --user=root --ask-pass --host=127.0.0.1
--create-table -D heartbeat --interval=1 --update --replace --daemonize




3. 在从库运行监测复制延迟,也可以在主库监控复制延迟

例子1:从库监测

1
2
3
4
5
6
7
8
9
10
11
[iyunv@mysql-slave ~]# pt-heartbeat --user=root --password=123456
-S /tmp/mysql.sock -D  heartbeat --master-server-id=1  --monitor --print-master-server-id
0.00s [  0.00s,  0.00s,  0.00s ] 1  #实时延迟,1分钟延迟,5分钟延迟,15分钟延迟
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1




例子2:从库监测

1
2
3
4
5
6
7
8
[iyunv@mysql-slave ~]# pt-heartbeat --user=root --password=123456
-S /tmp/mysql.sock -D  heartbeat  --master-server-id=1 --monitor
--print-master-server-id --daemonize --log=/tmp/slave-lag.log
[iyunv@mysql-slave ~]# tail -f /tmp/slave-lag.log
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1




例子3:主库监测

1
2
3
4
5
6
7
8
9
10
[iyunv@mysql-master ~]#  pt-heartbeat -D heartbeat --table=heartbeat
--monitor --host=192.168.2.23 --user=root --password=123456
--print-master-server-id   --master-server-id=1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1
0.00s [  0.00s,  0.00s,  0.00s ] 1





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

方法一:

1
2
3
4
[iyunv@mysql-master ~]#  pt-heartbeat --stop
Successfully created file /tmp/pt-heartbeat-sentinel
[iyunv@mysql-master ~]# rm -rf /tmp/pt-heartbeat-sentinel
[iyunv@mysql-master ~]#  不删除pt-heartbeat-sentinel  ,第二次,会无法启动



方法二:推荐
1
2
3
4
[iyunv@mysql-master ~]# pgrep -fl pt-heartbeat
5406 perl /usr/local/bin/pt-heartbeat --user=root --ask-pass --host=127.0.0.1
--create-table -D heartbeat --interval=1 --update --replace --daemonize
[iyunv@mysql-master ~]# kill  -9 5406



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-165892-1-1.html 上篇帖子: 安装mysql 5.6.26(二进制安装) 下篇帖子: 利用percona-toolkit 工具来检测mysql 主从数据库同步以及实现同步 mysql 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表