200 ? "200px" : this.width)!important;}
-->

介绍

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

原理

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

方法

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

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

-u:连接主库的用户

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

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

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

2.监控从库

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

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

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

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

4.停止后台更新操作

  1. pt-heartbeat --stop

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

  1. rm -rf /tmp/pt-heartbeat-sentinel

参数

  1. Usage: pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop
  2. 其中--update, --moniter,--check,--stop都是单独使用的,并且--update, --monitor, and --check are mutually exclusive
    --daemonize and --check are mutually exclusive.他们之间还是存在互斥。
  1. Options:
  2.  
  3. --ask-pass 使用密码进行mysql连接时给予提示
    --charset=s -A 默认的字符选项
  4. --check 执行一次从库的监控就结束
  5. --check-read-only 如果是只读的服务器那么使用该选项会保持插入
    --config=A 使用逗号分隔,如果指定了,那么该参数作为命令行的第一个选项
    --create-table 如果表不存在创建表heartbeat
    --daemonize 创建后台的更新shell
    --database=s -D 指定连接的数据库
    --dbi-driver=s Specify a driver for the connection; mysql and Pg
  6. are supported (default mysql)
  7. --defaults-file=s -F 通过提供的文件进行mysql连接
    --file=s 输出最新的 --monitor监控信息到指定的文件
    --frames=s 设置时间周期(default 1m,5m,15m)
  8. --help 显示帮助信息
  9. --host=s -h 指定连接的host
  10. --[no]insert-heartbeat-row 在使用--tables的时候默认是插入一条记录到表heartbeat前提是表中不存在该记录行
  11. --interval=f 指定更新和监控heartbeat表的频率默认是1S
    --log=s 当使用daemonized进行后台更新操作时输出所有的信息到指定的该文件
  12. --master-server-id=s 指定主的server-id
    --monitor 监控从服务器的参数选项
  13. --password=s -p 指定密码
  14. --pid=s 创建pid文件
  15. --port=i -P 指定连接时使用的端口
    --print-master-server-id 打印输出master-server-id
    --recurse=i Check slaves recursively to this depth in --check
  16. mode
  17. --recursion-method=a Preferred recursion method used to find slaves (
  18. default processlist,hosts)
  19. --replace 使用replace替换--UPDATE操作
    --run-time=m 指定监控的时长,单位有: s=seconds, m=minutes, h=hours, d=days; 如果比指定默认是以秒为单位一直监控下去
    --sentinel=s Exit if this file exists (default /tmp/pt-
  20. heartbeat-sentinel)
  21. --set-vars=A Set the MySQL variables in this comma-separated
  22. list of variable=value pairs
  23. --skew=f 指定执行从库检查的延时时长默认是0.5
    --socket=s -S 指定连接时使用的socket文件
    --stop 停止后台更新进程并生成--sentinel指定的文件
  24. --table=s 指定更新的表(默认是heartbeat)
  25. --update 更新主的heartbeat表,这个参数是后台进程必须的参数也可以用--replace替代
  26. --user=s -u 指定用户名
    --utc 忽略系统时间仅使用UTC
  27. --version 显示版本信息
  28. --[no]version-check Check for the latest version of Percona Toolkit,
  29. MySQL, and other programs (default yes)

总结

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

备注:

作者:pursuer.chen

博客:http://www.cnblogs.com/chenmh

本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

《欢迎交流讨论》

Mysql 主从延时监控的更多相关文章

  1. mysql主从延时处理方法

    mysql主从延时处理方法 1.今天做数据迁移,4个库总共60G数据左右吧,迁移成功后,发现从库延时在不断的上升,查看从库库表,部分表还没有同步过去 2.网上查询了一些文章,增加一下配置可以解决: # ...

  2. 有关RDS上只读实例延时分析-同适用于自建MySQL主从延时分析判断

    个人不是很喜欢在技术上跟人互喷,尤其是不在同一个岗位上的人.一方面本人的性格如此,另一方面,我自身的口水也确实是不行,人生经历了第一次的双11洗礼,在大促的环境下,总算知道了有些东西是否应该规避,这次 ...

  3. 使用python对mysql主从进行监控,并调用钉钉发送报警信息

    1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...

  4. mysql主从延时临时解决办法

    主从延时临时解决办法: 主从延迟严重的原因很多,其中有以下原因: 一.由于无主键大表的delete 和update导致. mysql  主从复制时.如果表上没有主键.会导致update和delete操 ...

  5. zabbix-2.4.8-1添加MySQL主从状态监控

    1.安装zabbix-agentyum -y install zabbix-2.4.8-1.el6.x86_64.rpm zabbix-agent-2.4.8-1.el6.x86_64.rpm 安装以 ...

  6. MySQL主从延时这么长,要怎么优化?

    MySQL主从复制,读写分离是互联网常见的数据库架构,该架构最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么主从延时这么大? 答:MySQL使用单线程重放RelayL ...

  7. mysql主从同步监控---邮件告警

    #!/bin/bash #check MySQL_Slave Status #crontab time : MYSQLPORT=`netstat -na|grep "|awk -F[:&qu ...

  8. mysql 主从错误以及监控

    同步中的常见的错误和处理 1.现象:在从库上面show slave status\G;出现下列情况,           Slave_IO_Running: Yes           Slave_S ...

  9. MySQL主从问题

    Mysql数据库主从心得整理      管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验 ...

随机推荐

  1. 21分钟 MySQL 入门教程(转载!!!)

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  2. git学习(四):撤销修改和撤销删除

    修改有两种情况 在工作区修改但没有add到暂存区 git checkout -- <file> 在工作区修改了也add到暂存区 git reset HEAD <file> 先撤 ...

  3. Stack Overflow: The Architecture - 2016 Edition(Translation)

    原文: https://nickcraver.com/blog/2016/02/17/stack-overflow-the-architecture-2016-edition/ 作者:Nick Cra ...

  4. BZOJ 1047 二维单调队列

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1047 题意:见中文题面 思路:该题是求二维的子矩阵的最大值与最小值的差值尽量小.所以可以考 ...

  5. iOS设计模式

    一.代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源delegate,通过和pro ...

  6. Maven打包生成可运行bat/sh脚本文件

    利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台.   <plugin>      <groupId>org ...

  7. 线程和线程池的理解与java简单例子

    1.线程 (1)理解,线程是系统分配处理器时间资源的基本单元也是系统调用的基本单位,简单理解就是一个或多个线程组成了一个进程,进程就像爸爸,线程就像儿子,有时候爸爸一个人干不了活就生了几个儿子干活,会 ...

  8. 原生AJAX封装

    var ajaxHelper = { /*1.0 浏览器兼容的方式创建异步对象*/ makeXHR: function () { //声明异步对象变量 var xmlHttp = false; //声 ...

  9. A library of generic data structures

    A library of generic data structures including a list, array, hashtable, deque etc.. https://github. ...

  10. 有状态Bean和无状态Bean的定义

    有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”:一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束.即每个用户最初都会得到一个初 ...