首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL-Seconds_behind_master的精度误差

前言 Seconds_behind_master是我们观察主从延迟的一个重要指标。但任何指标所能表示的精度都是有限的。例如用精度只能到秒的指标去衡量毫秒级的表现就会产生非常大的误差。...例如用Seconds_behind_master去评估1s内的主从延迟就是一个典型的例子。 问题现场 在一些问题的排查中,我们注意到一个很奇怪的现象。...Seconds_behind_master什么时候计算出来为1 这时候笔者突然想到一个点,如果主从延迟一个是501ms一个是499ms,那么Seconds_behind_master计算的时候会不会采用四舍五入法...在前0.5s,也就是[0.5,1)这个区间中我们计算出来的Seconds_behind_master是0,而在[1,1.5)区间计算的确是1 。...例如本文中的阐述就表明Seconds_behind_master对1s的主从延迟的刻画没有太大的意义。

62440

MySQL主从延迟Seconds_Behind_Master计算方式

1、Seconds_Behind_Master不准?...公式如下: 从库本地时间戳-主从本地的时间差-从库 SQL 线程正在执行的event的时间戳 注意:这个时间差只会在主从线程启动时计算一次,所以start slave后如果主从本地时间出现异常,Seconds_Behind_Master...也是不准的,需要重启复制线程重新计算主从本地时间差异(如果最终计算结果是负数,会归零) 2、 如果IO线程出现延迟,此时这个值是有误差的,Seconds_Behind_Master可能显示为0,但实际和主库是有延迟的...,容易出现误差 提示:所以只拿这个值来做复制延迟的监控是不准的,一般都会配合心跳表的时间戳来判断当前延迟 2、Seconds_Behind_Master的详细计算方式 每次进行show slave status...time_diff) : 0)); } 这里可以看到判断SQL线程是否应用所有的event IO线程拉取主库的binlog位置=SQL线程应用到对应的主库binlog位置 注意:此时如果IO线程有延迟则即使Seconds_Behind_Master

2.5K30

技术分享 | MySQL:你的 binlog_expire_logs_seconds 可能正在失效

如果你正在使用 MySQL8.0 ,并且在使用物理热备工具,那么 binlog_expire_logs_seconds 可能不会如你预想的那样生效。...binlog_expire_logs_seconds 为了防止 binlog 文件过大导致无可用的磁盘空间,MySQL 提供了一个系统变量用来配置过期时间,MySQL5.7 时变量名为expire_logs_days...,精确度为天;MySQL8.0 使用binlog_expire_logs_seconds来控制,其效果和名字的变化一样,精确度由天变成了秒。...下面我们来看一个 binlog_expire_logs_seconds 失效的场景。...之前的 binlog: 这是因为 MySQL8.0 为了解决备份时的全局锁问题,新引入了LOCK INSTANCE FOR BACKUP备份锁,而这把锁恰好导致了binlog_expire_logs_seconds

2.4K30

技术分享 | MySQL 复制那点事 - Seconds_behind_Master 参数调查笔记

正常情况下,da 的 Seconds_behind_Master 参数,应该保持在 0 或者很小的数值才对。...但是监控系统发现,da 的 Seconds_behind_Master 参数经常发生跳变,上一秒为 0 下一秒就可能为一个很大值(比如 10000)。...4. da 上 start slave;(show slave status \G 可以看到 Seconds_Behind_Master 变大。)...三、调查与分析过程 从前文的结果中可以看出,跟 Seconds_Behind_Master(下文简称 SBM)值有关的 MySQL 变量就是 last_master_timestamp。...四、总结 本文分析了并行复制和非并行复制下,Seconds_Behind_Master 参数值更新的相关逻辑。限于本文的作者水平有限,文中的错误在所难免,恳请大家批评指正。

1.9K40

MySQL案例:延迟一个小时了,Seconds_Behind_Master 还是 0 ?

临时解决之后,仔细想了一想,Seconds_Behind_Master 虽然计算方式有点坑,但是出现这么“巨大”的误差还是挺奇怪的,复习一下计算方式的同时,也顺便记录一下对这个问题的研究。...操作完成之后,从库发现存在同步延迟,但是监控图表中的 Seconds_Behind_Master 指标显示为 0,且 binlog 的延迟距离在不断上升。...不过 if 挺多的,所以借用源代码文件中的注释: /* The pseudo code to compute Seconds_Behind_Master: if (SQL thread...; } else print NULL; */ 可以知道,Seconds_Behind_Master的计算分为两个部分: SQL 线程正常,且回放完所有的 relaylog...&ev; /* Even if we don't execute this event, we keep the master timestamp, so that seconds

2K61
领券