返回顶部
首页 > 资讯 > 数据库 >Seconds_Behind_Master不准确问题 Seconds_Behind_Mas析ter解
  • 944
分享到

Seconds_Behind_Master不准确问题 Seconds_Behind_Mas析ter解

2024-04-02 19:04:59 944人浏览 安东尼
摘要

Seconds_Behind_Master不准确问题      Seconds_Behind_Mas析ter解 1. Seconds_Behind_Mast

Seconds_Behind_Master不准确问题

      Seconds_Behind_Mas析ter解

 

1. Seconds_Behind_Master说明:

通过show slave status查看到的Seconds_Behind_Master,从字面上来看,他是slave落后master的秒数,一般情况下,也确实这样,我们可以通过Seconds_Behind_Master数字查看slave是否落后于master,但是在一些环境中,他确会让我们产生幻觉。

Mysql官网中中,对Seconds_Behind_Master的有一句话阐述如下:

In essence, this field measures the time difference in seconds between the slave sql thread and the slave I/O thread.          

很清晰的表明,该值是SQL thread I/O thread.之间的差值。

 

2. Seconds_Behind_Master原理

Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread复制好的 event的timestamp(简写为ts)进行比较,而得到的这么一个差值。我们都知道的relay-log和主库的bin-log里面的内容完全一 样,在记录sql语句的同时会被记录上当时的ts,所以比较参考的值来自于binlog。

 

3. 导致Seconds_Behind_Master不准确的因素‘

a. 当在很快的网络连接情况下,I/O thread. 能很快的从master的binlog中同步sql到slave的relay-log里,这样,这个值就能基本确定的slave落后master的秒数

当网络环境特别糟糕的情况下,这个值确会让我们产生幻觉,I/O thread同步很慢,每次同步过来,SQL thread就能立即执行,这样,我们看到的Seconds_Behind_Master是0,而真正的,slave已经落后master很多很多。这时业务部门的同志们就会抱怨slave与master数据不对,而你看到的Seconds_Behind_Master确实为0,你就会非常的郁闷了。

其实这个时候,我们看下master,与slave就能很好的确定这期间的原因。

mysql> show master status\G

*************************** 1. row ***************************

File: ******-bin.001291

Position: 896711460

Binlog_Do_DB: 

Binlog_Ignore_DB: 

1 row in set (0.00 sec)

 

mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.69.6.163

Master_User: replica

Master_Port: 3801

Connect_Retry: 60

Master_Log_File: *****-bin.001211

Read_Master_Log_Pos: 278633662

Relay_Log_File: *****-relay-bin.002323

Relay_Log_Pos: 161735853

Relay_Master_Log_File: *******-bin.001211

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: 

Replicate_Ignore_DB: 

Replicate_Do_Table: 

Replicate_Ignore_Table: 

Replicate_Wild_Do_Table: 

Replicate_Wild_Ignore_Table: 

Last_Errno: 0

Last_Error: 

Skip_Counter: 0

Exec_Master_Log_Pos: 278633662

Relay_Log_Space: 161735853

Until_Condition: None

Until_Log_File: 

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File: 

Master_SSL_CA_Path: 

Master_SSL_Cert: 

Master_SSL_Cipher: 

Master_SSL_Key: 

Seconds_Behind_Master: 0

1 row in set (0.00 sec)

 

b. 有很长一段时间没有数据提交,slave I/O thread time和slave SQL thread time都保持在旧值,比如A(但事实上master上的时间已经到A+I了),这个时候主库出现提交,slave I/O开始去和master同步binlog,slave I/O thread time更新到A+I,但是slave SQL thread time保持在A值,这时的seconds_behind_master=I,出现较大延迟,但其实是否出现延迟是不确定的

 

c.Mysql主从同步延迟受到多种因素影响, 比如大事务, 从库查询压力, 网路延迟等; 这些比较常见; 但还受到主从机器系统时钟差的影响,这一点可能容易被忽视。

 

d.总结:由此看来 我们分析Seconds_Behind_Master这个参数的时候应该结合主从之间binlog日志的文件名和具体的网络环境来看。当然在网络畅通的情况下我们可以直接通过这个参数来看出主从之间的延迟。不过总的来说seconds_behind_master受影响的因素很多不能保持准确。

 

4. 对于second_behind_master不准确的解决方案

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

mk-heartbeat的实现也是借助timestmp的比较实现的,它首先需要保证主从服务器必须要保持一致,通过与相同的一个NTP server同步时钟。它需要在主库上创建一个heartbeat的表,里面至少有id与ts两个字段,id为server_id,ts就是当前的时间戳 now(),该结构也会被复制到从库上,表建好以后,会在主库上以后台进程的模式去执行一行更新操作的命令,定期去向表中的插入数据,这个周期默认为1 秒,同时从库也会在后台执行一个监控命令,与主库保持一致的周期去比较,复制过来记录的ts值与主库上的同一条ts值,差值为0表示无延时,差值越大表示 延时的秒数越多。我们都知道复制是异步的ts不肯完全一致,所以该工具允许半秒的差距,在这之内的差异都可忽略认为无延时。这个工具就是通过实打实的复 制,巧妙的借用timestamp来检查延时

 


您可能感兴趣的文档:

--结束END--

本文标题: Seconds_Behind_Master不准确问题 Seconds_Behind_Mas析ter解

本文链接: https://lsjlt.com/news/38075.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Seconds_Behind_Master不准确问题 Seconds_Behind_Mas析ter解
    Seconds_Behind_Master不准确问题      Seconds_Behind_Mas析ter解 1. Seconds_Behind_Mast...
    99+
    2024-04-02
  • 转解决MeasureString不准确的问题
    MeasureString 方法是用来测量指定字符串在指定字体下的宽度和高度的。但是有时候会发现 MeasureString 方法返...
    99+
    2023-09-14
    问题
  • 如何解决uniapp定位不准确问题
    随着移动互联网的快速发展,越来越多的应用程序需要使用到定位功能。而对于基于uniapp框架开发的应用程序而言,定位功能也成为了其中的一大重要部分。但是,许多uniapp开发人员在使用定位功能时,会遇到一个非常让人困扰的问题,那就是uniap...
    99+
    2023-05-14
  • 【MySQL】order by 结果不准确的问题及解决
    一 介绍    相信作为DBA 在和开发打交道的过程中,经常会遇到分页查询 order by 排序这样的需求。本文源于生产过程中的案例,5.6版本的数据库使用limit和order by...
    99+
    2024-04-02
  • C#中MeasureString参数不准确问题怎么解决
    在C#中,当使用`Graphics.MeasureString`方法测量字符串时,可能会出现参数不准确的问题。这可能是因为测量的字符...
    99+
    2023-08-08
    C# MeasureString
  • 如何解决php获取时间不准确的问题
    这篇文章主要为大家展示了如何解决php获取时间不准确的问题,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“如何解决php获取时间不准确的问题”这篇文章吧。php有什么用php是一个嵌套的缩写名称,指...
    99+
    2023-06-06
  • 怎么解决VMware下面CentOS系统时钟不准确问题
    本篇内容介绍了“怎么解决VMware下面CentOS系统时钟不准确问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在CentOS系统VMw...
    99+
    2023-06-16
  • 解决Python中的modf()函数取小数部分不准确问题
    使用math.modf()对一个浮点数进行拆分时经常会遇到如下情况 如下 import math print(math.modf(2.4)) # 输出 (0.3999999999999999, 2.0) 我们会...
    99+
    2022-06-02
    Python modf()函数 取小数
  • 聊聊Python中的浮点数运算不准确问题
    大家好,老 Amy 来了。之前就意识到一个问题,但是最近又有朋友提出来了,所以就想着干脆记录下来,分享给大家叭~ 啥问题呢?请看题: 也就是说,需要大家计算1.1-1的值,很多朋友...
    99+
    2024-04-02
  • 如何解决Zabbix中常见的监控数据不准确或丢失的问题
    检查监控数据源:首先要确认监控数据源的可用性和稳定性,确保监控数据能够正常采集。可以通过查看数据源的日志以及网络连接情况来确定是...
    99+
    2024-04-02
  • thinkphp参数不正确问题如何解决
    这篇文章主要介绍“thinkphp参数不正确问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“thinkphp参数不正确问题如何解决”文章能帮助大家解决问题。一、什么是“参数不正确”通常,当...
    99+
    2023-07-05
  • vue项目之webpack打包静态资源路径不准确的问题
    目录webpack打包静态资源路径不准确问题静态资源找不到如js文件图片找不到webpack中的静态资源处理Webpacked 资源资源处理规则在JavaScript里获取资源路径&...
    99+
    2024-04-02
  • Yum Httpd配置问题:PHP无法正确解析
    当我们在配置Yum Httpd时,经常会遇到PHP无法正确解析的问题。这个问题可能会导致网页无法正常显示,影响网站的访问和功能。解决这个问题的关键在于正确配置Httpd和PHP,确保它...
    99+
    2024-04-02
  • 关于information_schema.tables查询业务SCHEMA中表数量和表容量不准确问题
    前言 那天,在工作中,想在mysql的业务schema中找一张数据量最大的表,图方便,就想通过information_schema.tables中的table_schema去过滤业务schema,...
    99+
    2023-09-30
    数据库 mysql java
  • 如何解决php对象参数不确定的问题
    小编给大家分享一下如何解决php对象参数不确定的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!php对象参数不确定的时候需要改变一下写法,修改后的代码如“function uncertainParam() {$args...
    99+
    2023-06-26
  • 如何解决yum apache 不解析php的问题
    本文操作环境:centos7系统、php5.6版、DELL G3电脑如何解决yum apache 不解析php的问题Centos7:yum安装apache,编译安装php5.6,不解析php的解决方法首先,说一下问题发生的场景:因为懒,所以...
    99+
    2019-12-21
    yum apache
  • 怎么解决yum apache不解析php的问题
    这篇文章主要介绍怎么解决yum apache不解析php的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!yum apache不解析php的解决办法:1、安装依赖包httpd-devel;2、查看apsx所在路径;...
    99+
    2023-06-21
  • 如何解决php不解析html标签问题
    这篇文章主要讲解了“如何解决php不解析html标签问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决php不解析html标签问题”吧!php不解析html标签的解决办法:1、用PH...
    99+
    2023-06-20
  • Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题
    背景 在一次进行SQl查询时,我试着对where条件中vachar类型的字段去掉单引号查询,这个时候发现这条本应该很快的语句竟然很慢。这个varchar字段有一个复合索引。其中的总条数有58989,甚...
    99+
    2022-05-17
    Mysql 5.6隐式转换导致的索引失效 Mysql 5.6隐式转换
  • 分析和解决Gitlab不能审批问题
    近日有用户反映,在使用Gitlab过程中遇到了一个问题——不能进行审批。这样的问题对于团队合作来说是相当严重的,因此需及时解决。本文将对此进行分析和解决方案的探讨。首先,我们需要理解Gitlab中的审批机制。在Gitlab中,有一个功能叫做...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作