MySQL数据库主从延时如何去判断呢?本文我们介绍了两种判断方法:1. Seconds_Behind_Master vs 2. mk-heartbeat,接下来我们就分别介绍这些内容。

日常工作中,对于MySQL主从复制检查,一方面我们要保证复制的整体结构是否正常,另一方面需要检查主从数据是否保持一致。对于前者我们可以通过监控复制线程是否工作正常以及主从延时是否在容忍范围内,对于后者则可以通过分别校验主从表中数据的md5码是否一致,来保证数据一致,可以使用Maatkit工具包中的mk-table- checksum工具去检查。

方法1:

通过监控show slave statusG命令输出的Seconds_Behind_Master参数的值来判断,是否有发生主从延时。其值有这么几种:

NULL — 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes。

0 — 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为lag不存在。

正值 — 表示主从已经出现延时,数字越大表示从库落后主库越多。

负值 — 几乎很少见,我只是听一些资深的DBA说见过,其实,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。

show slave statusG,该命令的输出结果非常丰厚,给我们的监控提供了很多有意义的参数,比如:Slave_IO_Running该参数可作为 io_thread的监控项,Yes表示io_thread的和主库连接正常并能实施复制工作,No则说明与主库通讯异常,多数情况是由主从间网络引起的问题;Slave_SQL_Running该参数代表sql_thread是否正常,具体就是语句是否执行通过,常会遇到主键重复或是某个表不存在。下面就说到今天的重点Seconds_Behind_Master,该值作为判断主从延时的指标,那么它又是怎么得到这个值的呢,同时,它为什么又受到很多人的质疑?

Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和 io_thread复制好的event的timestamp(简写为ts)进行比较,而得到的这么一个差值。我们都知道的relay-log和主库的 bin-log里面的内容完全一样,在记录sql语句的同时会被记录上当时的ts,所以比较参考的值来自于binlog,其实主从没有必要与NTP进行同步,也就是说无需保证主从时钟的一致。

你也会发现,其实比较真正是发生在io_thread与sql_thread之间,而io_thread才真正与主库有关联,于是,问题就出来了,当主库I/O负载很大或是网络阻塞,io_thread不能及时复制binlog(没有中断,也在复制),而 sql_thread一直都能跟上io_thread的脚本,这时Seconds_Behind_Master的值是0,也就是我们认为的无延时,但是,实际上不是,你懂得。这也就是为什么大家要批判用这个参数来监控数据库是否发生延时不准的原因,但是这个值并不是总是不准,如果当io_thread与 master网络很好的情况下,那么该值也是很有价值的。

之前,提到Seconds_Behind_Master这个参数会有负值出现,我们已经知道该值是io_thread的最近跟新的ts与sql_thread执行到的ts差值,前者始终是大于后者的,唯一的肯能就是某个event的ts发生了错误,比之前的小了,那么当这种情况发生时,负值出现就成为可能。

方法2:

mk-heartbeat,Maatkit万能工具包中的一个工具,被认为可以准确判断复制延时的方法。

mk-heartbeat的实现也是借助timestmp的比较实现的,它首先需要保证主从服务器必须要保持一致,通过与相同的一个NTP server同步时钟。它需要在主库上创建一个heartbeat的表,里面至少有id与ts两个字段,id为server_id,ts就是当前的时间戳 now(),该结构也会被复制到从库上。

表建好以后,会在主库上以后台进程的模式去执行一行更新操作的命令,定期去向表中的插入数据,这个周期默认为1 秒,同时从库也会在后台执行一个监控命令,与主库保持一致的周期去比较,复制过来记录的ts值与主库上的同一条ts值,差值为0表示无延时,差值越大表示延时的秒数越多。

我们都知道复制是异步的ts不肯完全一致,所以该工具允许半秒的差距,在这之内的差异都可忽略认为无延时。这个工具就是通过实打实的复制,巧妙的借用timestamp来检查延时,非常好用!

关于检查MySQL数据库的主从延时的两种方法就介绍到这里了,希望本次的介绍能够对您有所收获!

mysql show slave_Mysql复制 show slave status相关推荐

  1. MySQL主从复制中的“show slave status”详细含义

    MySQL主从复制中的"show slave status"详细含义 正常状态的信息 *************************** 1. row ************ ...

  2. mysql master status_MySQL show master / slave status 命令参数

    一.show master status 二.show slave status Slave_IO_State SHOW PROCESSLIST输出的State字段的拷贝.SHOW PROCESSLI ...

  3. mysql show slave_MySQL show slave status 参考

    语法 SHOW SLAVE STATUS [FOR CHANNEL channel] 这个语句提供从线程的基本参数的状态信息.它要求有SUPER或者REPLICATION CLIENT权限. 示例 如 ...

  4. mysql 查看slave状态_解读show slave status 命令判断MySQL复制同步状态

    解读show slave status 命令判断MySQL复制同步状态 1. show slave status命令可以显示主从同步的状态 MySQL> show slave status \G ...

  5. mysql show slave status 无记录_Mysql show slave status 的研究

    我们使用 show slave status \G 来查看 *************************** 1. row *************************** Slave_I ...

  6. mysql slave 线程 简书_【MySQL】你真的读懂了slave status吗?

    前言:大家平时在检查主从复制的时候基本上都会使用 show slave status来看主从复制的情况,那么你真的读懂每个指标项了吗? 一.status指标解读 root@localhost [(no ...

  7. 查看mysql半杯_如何通过show slave status的输出使用change master to命令 | 半瓶

    在MySQL的master-slave或dual master的架构中,要重新开始复制可以使用change master to命令,而参数的选择可以来自简单的show slave status命令,举 ...

  8. mysql 复制 1032_mysql slave复制1032错误解决方法

    http://hi.baidu.com/dba_hui/item/a4b23a60ae1d6882c4d2497c 查看slave复制状态,发现SQL线程停止应用:mysql> show sla ...

  9. Mysql主从同步show slave status\g;说明

    下面再来说下show slave status命令显示的参数具体含义. 1)基于二进制日志复制的显示格式 mysql> show slave status\G ***************** ...

最新文章

  1. 2021年大数据Hadoop(八):HDFS的Shell命令行使用
  2. 揭秘vue——vue-cli3全面配置
  3. 编码区和非编码区的关系
  4. 对我影响最大的3位老师
  5. 使用POI生成Excel文件,可以自动调整excel列宽 .
  6. Docker for Windows使用简介
  7. C++中使用流读取数据 ifstream
  8. n个整数,其中有两个数是重复的,要求找出这两个重复的整数
  9. 电脑两边黑边怎么还原_Mac电脑录制的视频有黑边?如何解决
  10. EasyPR车牌识别学习总结
  11. 颠覆世界的新技术:区块链
  12. Haproxy配置http模式负载均衡
  13. 平衡二叉树、B树、B+树、B*树
  14. HEVC播放器出炉,迅雷看看支持H.265
  15. DCMTK各模块说明
  16. IDEA插件系列(88):Tab Shifter插件——选项卡移动工具
  17. uniapp密码输入框
  18. python实现简单的求矩阵的逆
  19. 计算机---之程序的装入
  20. win2008系统 安装hplaserj1010打印机驱动程序

热门文章

  1. [课程复习] 数据结构之经典题目回顾 (一)选择题、填空题1
  2. 实现iOS App的在线安装
  3. 传阿里旗下蚂蚁集团拟上市集资300亿美元,最快9月IPO
  4. 124. Binary Tree Maximum Path Sum 二叉树中的最大路径和
  5. 笔记本控制机器人方法
  6. 【Linux系统编程】进程内存模型
  7. 【Linux】一步一步学Linux——shopt命令(214)
  8. oledb vc访问mdb数据库_SQL SERVER数据库技术-1
  9. 消防给水及消火栓系统技术规范_2019一消备考干货《消防给水及消火栓技术规范》速收藏...
  10. 电脑下面的任务栏怎么取消隐藏_电脑桌面右下方任务栏的小图标如何隐藏