主从延时在主从环境中是一个非常值得关注的问题,有时候我们可以通过show slave status命令查看Seconds_Behind_Master值来分析主从的延时情况;但是由于该值是来自binlog文件语句的完成时间,当一条SQL执行时间很长的时候那么该值可能就不准确了,那么有没有什么工具可以很准确的分析主从的延时情况呢? 在PT系列工具里面的pt-heartbeat工具很好的解决了这个问题。

原理

pt工具在主库上面创建一张测试表,以一秒的频率去更新这个的记录并把当前时间写入到字段中,通过分析主从同步过来的时间和当前时间做对比得出时间差。

方法

1.在主库上创建后台update进程

pt-heartbeat -uroot -proot  -D chenmh --create-table --update  --daemonize

-u:连接主库的用户

-p:连接主库的用户密码

-D:主库上存在的数据库,这个数据库随便指定,但是必须存在

--create-table:默认会在主库指定的数据库中创建一个“heartbeat”表

2.监控从库

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1 

这里面的参数除了--master-server-id是主库的serverid,其它的都是指从库,特别注意--master-server-id一定不能写错否则结果就是错误的,记录了日志之后就可以对该值做监控预警了

3.写入监控日志做预警分析

pt-heartbeat -uroot -proot -D chenmh --table=heartbeat --master-server-id=10  --monitor -h 192.168.137.20 --interval=1  --file=/tmp/heart.log
cat /tmp/heart.log |awk -F "s"  '{print $1}'

4.停止后台更新操作

pt-heartbeat --stop

当你停止了后台更新进程会在/tmp目录下面产生一个pt-heartbeat-sentinel文件,下次再启动该后台进程之前必须先删除该文件,否则无法启动。

rm -rf /tmp/pt-heartbeat-sentinel

参数

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 Pgare 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 --checkmode--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-separatedlist 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)

总结

可以通过这个监控的输出文件信息做一个邮件报警,可以去写这样的一个shell

Mysql 主从延时监控(pt-heartbeat)详解相关推荐

  1. mysql监控sql_关于对mysql语句进行监控的方法详解

    快速阅读 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控. 我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以 ...

  2. Linux系统与网络、磁盘参数和日志监控等命令详解二

    创作人QQ:851301776,邮箱:lfr890207@163.com, 欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点! 个人座右铭: 1.没有横空出世,只要厚积一定发. ...

  3. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

  4. php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 ? 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 ...

  5. mysql主从同步监控小脚本(加强版)

    mysql主从同步监控小脚本(加强版): 新版本脚本增加了"当发现同步出现无法同步的时候"会自动提取主库的file号,以及pos,进行同步主库,脚本内容如下: #!/bin/sh ...

  6. java vm 远程监控配置文件_Java VisualVM监控远程JVM(详解)

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  7. mysql语句性能开销检测profiling详解

    转载自 mysql语句性能开销检测profiling详解 之前我介绍过msyql查询优化explain检查命令的使用,explain主要是检查sql语句的基本性能,sql是否优秀,但不能查看具体的涉及 ...

  8. mysql切换用户sql语句,MySQL用户管理及SQL语句详解

    [(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...

  9. mysql57数据库命令_MySQL 5.7 mysql command line client 使用命令详解

    MySQL 5.7 MySQL command line client 使用命令 1.输入密码:****** 2.ues mysql;使用Mysql 3.show databases;显示数据库 4. ...

最新文章

  1. Find The Multiple POJ - 1426(只包含01的十进制倍数(同余模定理))
  2. 下载的TXT小说如何去除广告、去除多余空行?
  3. mysql合并到区间_合并区间
  4. 人造卫星为什么会绕着地球转而不是停在太空中或者越飞越远.掉进地球的卫星为什么烧不完....
  5. Jersey注解详解
  6. IIS Service Unavailable问题
  7. LOJ#6002. 「网络流 24 题」最小路径覆盖
  8. VB6中SendKeys的基本应用
  9. Android——音乐播放器完善——进度条显示当前播放进度,加可拖动进度条(未待解决完问题)...
  10. ubuntu记录pdf手写笔记: 数位板(硬件)+xournal(软件)
  11. IPS(入侵防御系统)技术
  12. opencv读取颜色通道
  13. Python绘制二元函数图像
  14. wps时间戳转换成日期
  15. Mysql面试题总结(1)
  16. c语言罗,《程序设计基础(C语言)》罗云芳 黄富革_孔网
  17. 静态路由、策略路由与NQA联动
  18. Java导入Excel数据
  19. SDNU1703字谜
  20. HTML基础-02-表格

热门文章

  1. 辞职的时候才知道上司的工资是我的10倍,这些道理都在这些公众号中!
  2. 提高CSDN阅读量。需要写出好文章。新技术的笔记!
  3. Java的左移和右移的含义!
  4. ACMNO.18 C语言-选择排序 用选择法对10个整数从小到大排序。 输入 10个整数 输出 排序好的10个整数
  5. PyTorch 手把手搭建(MNIST)神经网络
  6. 双目视觉测距原理,数学推导及三维重建资源
  7. 机器学习库Scikit-learn库使用总结.pptx
  8. 基于OpenCV的车辆变道检测
  9. [Linux]VI相关操作
  10. 使用Spring框架实现远程服务暴露与调用