范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

关于使用ptheartbeat监测MySQL主从复制延迟的方法

  pt-heartbeat的工作原理通过使用时间戳方式在主库上更新特定表,然后在从库上读取被更新特定表里的时间戳,再与本地系统时间对比来得出其延迟。
  具体流程:
  1)在主库上创建一张heartbeat表,按照一定的时间频率更新该表的字段(把时间更新); 监控操作运行后,heartbeat表能促使主从同步。
  2)连接到从库上检查复制的时间记录,和从库的当前系统时间进行比较,得出时间的差异。
  一、使用方法(主从和从库上都可以执行监控操作):
  pt-heartbeat [OPTIONS] [DSN] —update | —monitor | —check | —stop  注意:需要指定的参数至少有 --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, position              bigint unsigned DEFAULT NULL, relay_master_log_file varchar(255) DEFAULT NULL, exec_master_log_pos   bigint unsigned DEFAULT NULL ); 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,5m,15m] 在--monitor里输出的[]里的记录段,默认是1m,5m,15m。可以指定1个;如:--frames=1s,多个用逗号隔开。可用单位有秒(s)、分钟(m)、小时(h)、天(d)。 --interval 检查、更新的间隔时间。默认是见是1s。最小的单位是0.01s,最大精度为小数点后两位,因此0.016将自动调整至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。
  二、演示使用pt-heartbeat  # --master-server-id参数(主库my.cnf里配置的server-id值) a、首先添加表 # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --create-table --update MASTER> select * from heartbeat; +----------------------------+-----------+------------------+-----------+-----------------------+---------------------+ | ts | server_id | file             | position  | relay_master_log_file | exec_master_log_pos | +----------------------------+-----------+------------------+-----------+-----------------------+---------------------+ | 2022-09-22T09:48:14.003020 | 1 | mysql-bin.000391  | 677136957 | mysql-bin.000180      |                 120 | +----------------------------+-----------+------------------+-----------+-----------------------+---------------------+ b、更新主库上的heartbeat(后台运行) # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --update & [1] 31249 c、从库上监控延迟 # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --monitor --print-master-server-id 1.00s [ 0.02s,  0.00s,  0.00s ] 1  #实时延迟: 1分钟延迟,5分钟延迟,15分钟延迟 1.00s [ 0.03s,  0.01s,  0.00s ] 1   1.00s [ 0.05s,  0.01s,  0.00s ] 1 1.00s [ 0.07s,  0.01s,  0.00s ] 1 1.00s [ 0.08s,  0.02s,  0.01s ] 1 1.00s [ 0.10s,  0.02s,  0.01s ] 1 1.00s [ 0.12s,  0.02s,  0.01s ] 1 1.00s [ 0.13s,  0.03s,  0.01s ] 1 d、其他操作示例 #将主库上的update使用守护进程方式调度 # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --update --daemonize #修改主库上的更新间隔为2s # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --update --daemonize --interval=2 #停止主库上的pt-heartbeat守护进程 # pt-heartbeat --stop Successfully created file /tmp/pt-heartbeat-sentinel # rm -rf /tmp/pt-heartbeat-sentinel #单次查看从库上的延迟情况 # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --check 1.00 #使用守护进程监控从库并输出日志 # pt-heartbeat --user=root --password=pwd -S /tmp/mysql.sock -D test --master-server-id=1 --monitor --print-master-server-id --daemonize --log=/tmp/slave-heart.log
  三、自动化监控  注意: 如果想把这个输出结果加入自动化监控,那么可以使用如下命令使监控输出写到文件,然后使用脚本定期过滤文件中的最大值作为预警即可: 注意--log选项必须在有--daemonize参数的时候才会打印到文件中,且这个文件的路径最好在/tmp下,否则可能因为权限问题无法创建 # pt-heartbeat -D test --table=heartbeat --monitor --user=root --password=pwd --log=/opt/master-slave-delay.log --daemonize [root@master-server ~]# tail -f /opt/master-slave-delay.txt //可以测试,在主库上更新数据时,从库上是否及时同步,如不同步,可以在这里看到监控的延迟数据 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.00s [ 0.00s, 0.00s, 0.00s ] ....... 下面是编写的主从同步延迟监控脚本,就是定期过滤--log文件中最大值(此脚本运行的前提是:启动更新主库heartbeat命令以及带上--log的同步延迟检测命令)。如果发生延迟,发送报警。 # cat /root/check-slave-monitor.sh#!/bin/bash cat /opt/master-slave-delay.log > /opt/master_slave_delay.log echo -e > /opt/master-slave-delat.log max_time=`cat /opt/master_slave_delay.log |grep -v "^#39; |awk "{print $1}" |sort -k1nr |head -1` NUM=$(echo "$max_time"|cut -d"s" -f1) if [ $NUM == "0.00" ];then echo "MySQL主从同步延迟一致" else echo "Mysql主从数据同步有延迟" # TODO 这里添加报警 fi结合crontab,每隔一分钟检查一次 # mysql主从同步延迟检查 * * * * * /bin/bash -x /root/check-slave-monitor.sh > /dev/null 2>&1
  关闭上面在主库上执行heartbeat的守护进程  方法一:可以用参数--stop去关闭 # pt-heartbeat --stop Successfully created file /tmp/pt-heartbeat-sentinel 这样就把在主上开启的进程杀掉了。 但是后续要继续开启后台进行的话,记住一定要先把/tmp/pt-heartbeat-sentinel 文件删除,否则启动不了 方法二:直接kill掉进程pid(推荐这种方法) #ps -ef|grep heartbeat kill -9 15152
  最后总结:
  通过pt-heartbeart工具可以很好地弥补默认主从延迟的问题,但需要搞清楚该工具的原理。
  重点了: 默认的Seconds_Behind_Master值是通过将服务器当前的时间戳与二进制日志中的事件时间戳相对比得到的,所以只有在执行事件时才能报告延迟。从库复制线程没有运行,也会报延迟。
  还有一种情况:大事务,一个事务更新数据长达一个小时,最后提交。这条更新将比它实际发生时间要晚一个小时才记录到二进制日志中。当从库执行这条语句时,会临时地报告备库延迟为一个小时,执行完后又很快变成0。
  以上就是今天的内容,希望读者朋友看完这篇文章后有所启发。

全国政协委员中国华能集团董事长温枢刚建议加快建立新能源储能一体化调度机制刘丽靓中国证券报中证网中证网讯(记者刘丽靓)着眼新能源与储能的优化发展,全国政协委员中国华能集团董事长温枢刚日前建议,因地制宜发展新能源配储能,加快建立新能源储能一体化调度机制,同沙特和伊朗在北京把酒言欢,拜登迷惑了说好的战争呢?伊朗和沙特在北京握手,两国恢复外交关系。中国继乌克兰战争的12条和平方案后,再一次重磅出手。传说中的和平,真的有那么难吗?我是树干,天天国际时事微解毒。沙伊把酒言欢,到底谁赢了?王多位大学校长代表支招毕业生稳就业中青报中青网见习记者尹希宁记者李超今年的政府工作报告中,就业一词出现频率达20余次,成为备受关注的高频词之一。报告指出,落实落细就业优先政策,把促进青年特别是高校毕业生就业工作摆在突发重磅消息!中国主导的三方联合声明,必将载入世界史册这是一场石破天惊的外交突破,一次载入史册的历史事件。从昨天晚上到今天,国内外有不少人这样评价一则突发重磅消息。当地时间3月10日,中国沙特阿拉伯伊朗三国政府分别向外界发布中沙伊三方王珊珊斩获回归首球,武汉车谷江大女足开局两连胜!2023中国太平中国女子足球协会超级联赛正在进行,3月8日,武汉车谷江大女足前往延安市新区体育场,客场挑战陕西志丹女足。最终,依靠特姆瓦王珊珊赵雨欣的进球,武汉车谷江大女足客场30全国政协委员为全职妈妈发声,建议畅通渠道保障其财产知情权今年三八国际妇女节恰逢全国两会召开,全国政协委员深圳市宝安区社会福利中心副主任费英英用两会提案,给全职妈妈们送上了一份慷锵有力的节日祝福,就保障全职家庭主妇权益建言献策。她建议,保孩子确诊隐睾症?孩子蛋蛋有这个症状,尽早就医!前几天央视热播的电视剧我们的日子,大家都看了吗?电视剧里有一个扎心的情节李小冉扮演的刘淑霞喜得二胎时,却意外发现大儿子没有蛋蛋!图源电视剧我们的日子在医学上,这种疾病叫做隐睾症。没23岁爆红,28被封杀,年近40口碑爆棚他的翻红,狠狠在打内娱脸2022年一档名叫快乐再出发的综艺节目,流量收视评分大获成功。是2007年从快男全国13强里挑选出的,由6位过气明星录制成的,一档豆瓣评分9。6的音乐综艺。而实际上节目最打动人的不她们是靠实力爆红的女性代表!汤唯王心凌刘敏涛杨紫琼日前CCTV6电影频道门户1905电影网,发布一年来凭借作品和实力,爆火出圈的女性代表,包括王心凌汤唯刘敏涛杨紫琼高叶殷桃曾黎等纷纷在列。汤唯汤唯凭借电影分手的决心,她再次登上戛纳废弃的旧TVB大楼除了有黄金时代还有恐怖灵异故事可怕荒凉的谣言在20世纪80年代和90年代,TVB被视为对香港和亚洲文化产生重大影响的电视台之一。当时,TVB的天王和天后也是几代人的青春,二三十年后,他们仍然记忆犹新。随着互联网的发展,日本韩老照片苏联电影的著名演员和罕见镜头朋友们,今天为大家准备了一些苏联老电影中的镜头。这些作品向我们展示了苏联电影的幕后花絮。让我们感受一下这些演员和导演的魅力,或许能让一些人想起儿时的一些美好时光。塔蒂亚娜奥本海姆在