判断主从延时,通常有两个方法:

1. Seconds_Behind_Master  vs  2. mk-heartbeat,下面具体说下两者在实现功能的差别。

可以通过监控show slave status\G命令输出的Seconds_Behind_Master参数的值来判断,是否有发生主从延时。 其值有这么几种: NULL - 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes. 0 - 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为lag不存在。 正值 - 表示主从已经出现延时,数字越大表示从库落后主库越多。 负值 - 几乎很少见,只是听一些资深的DBA说见过,其实,这是一个BUG值,该参数是不支持负值的,也就是不应该出现。

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来检查延时,赞一个!

转载于:https://www.cnblogs.com/gaoyuechen/p/8628148.html

Seconds_Behind_Master相关推荐

  1. mysql seconds_behind_master_MySQL 复制延迟 Seconds_Behind_Master 究竟是如何计算的

    原标题:MySQL 复制延迟 Seconds_Behind_Master 究竟是如何计算的 导读: 作者:罗小波 参考链接 https://dev.mysql.com/doc/refman/5.7/e ...

  2. seconds_behind_master监控复制推延的不足及pt-heartbeat改进方法

    seconds_behind_master监控复制延迟的不足及pt-heartbeat改进方法  seconds_behind_master含义及不足 seconds_behind_master的值是 ...

  3. MySQL同步状态双Yes的假象及seconds_behind_master的含义

    近期由于特殊原因有一台主库宕机了一个小时没有处理,说起来这是个挺不好啥意思的事情,但是由于这个事情反而发现个比较诡异的情况,那就是在主库宕机一个小时候后,监控才发出从库IO thread中断的报警,也 ...

  4. mysql seconds_behind_master_MySQL中的seconds_behind_master的理解

    通过show slave status查看到的Seconds_Behind_Master,从字面上来看,他是slave落后master的秒数,一般情况下,也确实这样,我们可以通过Seconds_Beh ...

  5. 【华为云技术分享】MySQL Seconds_Behind_Master简要分析

    Seconds_Behind_Master 对于mysql主备实例,seconds_behind_master是衡量master与slave之间延时的一个重要参数.通过在slave上执行"s ...

  6. mysql timestamp 当前_技术分享 | MySQL 复制那点事 - Seconds_behind_Master 参数调查笔记

    作者:戴骏贤 网易游戏 技术部资深数据库系统工程师. 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 文章阅读时间约 15 分钟,文中著名参考文献在 ...

  7. mysql seconds_behind_master_MySQL同步状态双Yes的假象及seconds_behind_master的含义

    近期由于特殊原因有一台主库宕机了一个小时没有处理,说起来这是个挺不好啥意思的事情,但是由于这个事情反而发现个比较诡异的情况,那就是在主库宕机一个小时候后,监控才发出从库IO thread中断的报警,也 ...

  8. seconds_behind_master入门

    与数据同步有关的时间点主要包括以下三个: - 主库 A 执行完成一个事务,写入 binlog,我们把这个时刻记为 T1; - 之后传给备库 B,我们把备库 B 接收完这个 binlog 的时刻记为 T ...

  9. mysql seconds_behind_master_[MySQL管理] Seconds_Behind_Master 解析

    通过show slave status查看到的Seconds_Behind_Master,从字面上来看,他是slave落后master的秒数,一般情况下,也确实这样,我们可以通过Seconds_Beh ...

最新文章

  1. exist后select加数字的理解
  2. 2019 年,19 种方法让自己成为更好的 Node.js 工程师
  3. MCU实战经验:多种的按键处理
  4. php文件名函数,php 获取文件名basename()函数的用法总结
  5. 静态路由与动态路由的优先级_静态路由基础知识
  6. 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复
  7. NodeJS自定义包和模块的导入(require)、导出(exports)
  8. 太阳代理ip_IP直通车 | 冬季之始,你知多少
  9. 安卓(Android)的原生系统真的那么好用吗
  10. 利用JavaScript完成页面定时弹出广告
  11. java程序的组织结构
  12. undefind_undefined
  13. Android 11版本号仍有甜点名称 只是不再公开:红丝绒蛋糕
  14. 【Pygame小游戏】10年前风靡全球的手游《愤怒的小鸟》,是如何霸榜的?经典回归......
  15. Android 学习笔记之二 Netspeed
  16. 照片太大怎么压缩200k?图片怎么缩小到200k以下?
  17. 爬取中国所有银行官网网址信息
  18. Win11任务栏太宽了怎么办?教你一招快速修改任务栏大小
  19. 学习Java可以做些什么?
  20. 2小时学会CSS,完成网页制作!

热门文章

  1. UAVStack的慢SQL数据库监控功能及其实现
  2. Ubuntu12.04 安装MySQL简单步骤
  3. 速读《构建之法:现代软件工程》提问
  4. 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
  5. iptables从入门到精通
  6. python m http_非常简单的Python HTTP服务
  7. 自动化测试里的数据驱动和关键字驱动思路的理解
  8. AWS 云技术专栏系列文章
  9. Neutron — Hierarchical Port Binding(层次化端口绑定)
  10. 2021 亚马逊云科技中国峰会,对话《容器混合云会是未来的答案吗》