Mysql 主从同步状态检查

2023-05-16

show slave status \G 参数详解

1image.pngimage.png

Slave_IO_State:SHOW PROCESSLIST输出的State字段的拷贝。

Master_User:被用于连接主服务器的当前用户。

Master_Port:当前的主服务器接口。

Connect_Retry:–master-connect-retry选项的当前值,连接重试时间

Master_Log_File:I/O线程当前正在读取的主服务器二进制日志文件的名称。

Read_Master_Log_Pos:在当前的主服务器二进制日志中,I/O线程已经读取的位置。

Relay_Log_File:SQL线程当前正在读取和执行的中继日志文件的名称。

Relay_Log_Pos:在当前的中继日志中,SQL线程已读取和执行的位置。

Relay_Master_Log_File:由SQL线程执行的包含多数近期事件的主服务器二进制日志文件的名称。

Slave_IO_Running:I/O线程是否被启动并成功地连接到主服务器上。

Slave_SQL_Running:SQL线程是否被启动。

Replicate_Do_DB,

Replicate_Ignore_DB

搭建主从复制时使用–replicate-do-db和–replicate-ignore-db选项指定的数据库清单

Replicate_Do_Table,

Replicate_Ignore_Table,

Replicate_Wild_Do_Table,

Replicate_Wild_Ignore_Table

使用–replicate-do-table,–replicate-ignore-table,–replicate-wild-do-table和–replicate-wild-ignore_table选项指定的表清单

Last_Errno,Last_Error:被多数最近被执行的查询返回的错误数量和错误消息。错误数量为0并且消息为空字符串意味着“没有错误”。如果Last_Error值不是空值,它也会在从服务器的错误日志中作为消息显示。

Skip_Counter:最近被使用的用于SQL_SLAVE_SKIP_COUNTER的值。

Exec_Master_Log_Pos:表示SQL线程已经执行的Relay log相对于主库二进制日志偏移量的位置,一般gtid复制出错使用该项去主库中查询。

Relay_Log_Space:表示所有原有的中继日志结合起来的总大小

Until_Condition:如果没有指定UNTIL子句,则没有值。如果从属服务器正在读取,直到达到主服务器的二进制日志的给定位置为止,则值为Master,如果从属服务器正在读取,直到达到其中继日志的给定位置为止,则值为Relay。

Until_Log_File

Until_Log_Pos

Until_Log_File和Until_Log_Pos用于指示日志文件名和位置值,日志文件名和位置值定义了SQL线程在哪个点中止执行。

Master_SSL_Allowed:显示了从服务器是否使用SSL连接到主服务器。如果允许对主服务器进行SSL连接,则值为Yes;如果不允许对主服务器进行SSL连接,则值为No;如果允许SSL连接,但是从服务器没有让SSL支持被启用,则值为Ignored。

Master_SSL_CA_File

Master_SSL_CA_Path

Master_SSL_Cert

Master_SSL_Cipher

Master_SSL_Key

如果Slave使用SSL连接Master服务器,这里就会显示对应的证书和私钥信息。使用CHANGE MASTER与SSL相关的选项有:–master-ca,–master-capath,–master-cert,–master-cipher和–master-key等。

Seconds_Behind_Master:表示主从之间延迟的时间,单位是秒。就是SQL线程当前执行的binlog(实际上是relay log)中的timestamp和IO线程最新的timestamp的差值。

实质上,此字段计算Slave SQL线程和Slave i/o线程之间的时间差 (以秒为单位)。如果主节点和从服务器之间的网络连接速度较快,则Slave i/o线程非常接近主服务器,因此此字段是对从SQL线程与主服务器进行比较的后的一个很好的近似值。如果网络很慢,这不是一个好的近似;从SQL线程可能经常被从i/o线程所捕获,因此Seconds_Behind_Master通常显示值为0,即使i/o线程比主服务器慢很多。换言之,此列仅适用于快速网络,后续将专门出一篇文章对这个SBM的值进行说明。

Master_SSL_Verify_Server_Cert:显示是否认证Master证书。

Last_IO_Error,Last_SQL_Error:类似last_error,在出现IO线程错误和SQL线程错误的时候会有值

Replicate_Ignore_Server_Ids: :slave当前会跳过的事件号

Master_Server_Id:显示主服务器的Server_id。

Master_UUID:记录Master的UUID。

Master_Info_File:记录Master info信息的存储位置。

SQL_Delay:记录Slave设置延迟复制的时间,0表示无延迟,主动延迟复制在某些情况下有助于恢复。

SQL_Remaining_Delay:当 Slave_SQL_Running_State 等待,直到MASTER_DELAY秒后,Master执行的事件, 此字段包含一个整数,表示有多少秒左右的延迟。在其他时候,这个字段是0。

Slave_SQL_Running_State

监控主从同步延迟,同步延迟的检查工作主要从下面两方面着手

  • 一般的做法就是根据Seconds_Behind_Master的值来判断slave的延迟状态。

可以通过监控show slave status\G命令输出的Seconds_Behind_Master参数的值来判断,是否有发生主从延时。

以上是show slave status\G的输出结果,需要监控下面三个参数:

   1)Slave_IO_Running该参数可作为io_thread的监控项,Yes表示io_thread的和主库连接正常并能实施复制工作,No则说明与主库通            讯异常,多数情况是由主从间网络引起的问题;

   2)Slave_SQL_Running该参数代表sql_thread是否正常,YES表示正常,NO表示执行失败,具体就是语句是否执行通过,常会遇到            主键重复或是某个表不存在。

   3)Seconds_Behind_Master是通过比较sql_thread执行的event的timestamp和io_thread复制好的event的timestamp(简写为ts)进行            比较,而得到的这么一个差值;

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

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

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

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


Seconds_Behind_Master的计算方式可能带来的问题:

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发生了错误,比之前的小了,那么当这种情况发生时,负值出现就成为可能。


  • 上面根据Seconds_Behind_Master的值来判断slave的延迟状态,这么做在大部分情况下尚可接受,但其实是并不够准确的。对于Slave延迟状态的监控,还应该做到下面的考虑:

如何正确判断slave的延迟情况:

1)首先看 Relay_Master_Log_File 和 Master_Log_File 是否有差异;

2)如果Relay_Master_Log_File 和 Master_Log_File 是一样的话,再来看Exec_Master_Log_Pos 和 Read_Master_Log_Pos 的差异,对比SQL        线程比IO线程慢了多少个binlog事件;

3)如果Relay_Master_Log_File 和 Master_Log_File 不一样,那说明延迟可能较大,需要从MASTER上取得binlog status,判断当前的             binlog和MASTER上的差距;

因此,相对更加严谨的做法是:

在第三方监控节点上,对MASTER和slave同时发起SHOW BINARY LOGS和SHOW slave STATUS\G的请求,最后判断二者binlog的差          异,以及 Exec_Master_Log_Pos 和Read_Master_Log_Pos 的差异。

例如:

在MASTER上执行SHOW BINARY LOGS 的结果是:

+------------------+--------------+

| Log_name | File_size |

+------------------+--------------+

| mysql-bin.000009 | 1073742063 |

| mysql-bin.000010 | 107374193 |

+------------------+--------------+

而在slave上执行SHOW slave STATUS\G 的结果是:

Master_Log_File: mysql-bin.000009

Read_Master_Log_Pos: 668711237

Relay_Master_Log_File: mysql-bin.000009

slave_IO_Running: Yes

slave_SQL_Running: Yes

***

Exec_Master_Log_Pos: 654409041

***

Seconds_Behind_Master: 3296

***

这时候,slave实际的延迟应该是:

mysql-bin.000009 这个binlog中的binlog position 1073742063 和 slave上读取到的binlog position之间的差异延迟,即:

1073742063 - 654409041 = 419333022 个binlog event

并且还要加上 mysql-bin.000010这个binlog已经产生的107374193个binlog event,共

107374193 + 419333022 = 526707215 个binlog event

原文链接:https://www.cnblogs.com/kevingrace/p/5685511.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql 主从同步状态检查 的相关文章

随机推荐

  • Ubuntu Linux中使用快捷键截图

    在WIN中 xff0c 习惯了用QQ的CTRL ALT A来截取指定区域的截屏了 xff0c 确实方便好用 xff0c 不过在UBUNTU中 xff0c 可以使用gnome screenshot 来完成类似的功能 当然 xff0c 截屏编辑
  • ubuntu14.04 + dlib19.2+【 C++ 】+Face Landmark Detection

    1 安装dlib dlib官网这里好像只有最新的dlib版本包 xff0c 下载选项在左下角有个蓝色的按钮 xff0c 写着download 博主用的还是目前最新的版本19 2 xff0c 因为最新的dlib版本添加了一些新的人脸检测器 x
  • Ubuntu如何测试安装包是否安装成功

    举个例子 xff0c 比如 xff1a 测试python的dlib库是否安装成功 在终端下输入 xff1a span class hljs keyword python span 出现了python版本信息 xff0c 说明已安装pytho
  • Ubuntu下有关显存的命令

    查看NVIDIA实时显存指令 在跑深度学习的时候 xff0c 经常出现显存不足的情况 xff0c 所以我们希望能够随时查看GPU时使用率 如果你是NVIDIA的GPU xff0c 那么在命令行下 xff0c 只需要一行命令就可以实现 1 显
  • 剑指offer刷题记录

    xff03 面试题 xff19 xff1a 用两个栈实现队列 用两个栈来实现一个队列 xff0c 完成队列的Push和Pop操作 队列中的元素为int类型 算法思想 xff1a 一个队列用两个栈进行操作 xff0c 队列是先进先出 xff0
  • Deconvolutional Network [deconv] 研究

    前言 deconv的用处还挺广的 xff0c 涉及到 visualization pixel wiseprediction unsupervised learning 都会用到deconv的结构 比如Deconvolutional Netw
  • 实力认证!百度超级链BaaS平台通过深圳国家金融科技测评中心权威技术测评

    近日 xff0c 百度超级链BaaS平台顺利通过深圳国家金融科技测评中心 xff08 以下简称 NFEC xff09 技术测评 xff0c 并获得由NFEC出具的测评报告 xff0c 百度超级链在金融相关领域的技术实力再次获得权威认可 NF
  • GAN系列

    paper GAN开山之作 xff1a Generative Adversarial Networks GAN翻译
  • [Android] VasSonic H5加载优化加载库 源码解读及需要注意的地方

    1 VasSonic是什么 xff1f 一句话总结 xff1a 优化webview对h5的加载速度 wiki原话 xff1a VasSonic取名于世嘉游戏形象音速小子 xff0c 是腾讯VAS SNG增值产品部QQ会员 团队研发的一个轻量
  • eve-ng 2.0.3-112懒人版安装、GNS3 2.2.32安装包、思科ASA8.42 9.42 路由器C3600 C7200、IOU镜像、思科IPS入侵防御系统

    Yo what s up guys 包含所有该用到的软件 xff0c 都给你们直接总结好了 eve span class token operator span ng span class token number 2 0 span spa
  • ucos ii学习笔记3 消息队列、信号量集

    这一篇可以说是上一篇的升级版 xff0c 消息队列是邮箱的升级版 xff0c 邮箱只能传递一个数据 xff0c 消息队列可以传递多个数据 信号量集则是多个二值信号量的集合 消息队列由3个部分组成 xff1a 事件控制块 消息队列和消息 当把
  • Redis常用命令-史上最全最新版本(一)

    Redis常用命令 史上最全最新版本 xff08 一 xff09 一 Redis基础命令二 Redis操作key的一些命令三 Redis五大基本数据类型1 String xff08 字符串 xff09 类型2 List xff08 列表 x
  • js删除对象中的元素

    if e data let result 61 JSON parse e data this form 61 result item 删除对象中的create time xff0c update time元素 delete this for
  • FreeRTOS 任务调度 任务切换

    64 嵌入式 简述启动调度器 移植层调度器启动第一个任务 任务切换参考 FreeRtos 简述 前面文章 lt FreeRTOS 任务调度 任务创建 gt 介绍了 FreeRTOS 中如何创建任务以及其具体实现 一般来说 xff0c 我们会
  • FreeRTOS 信号量

    64 嵌入式 简述二进制信号量 二进制信号量使用二进制信号量实现 创建信号量获取信号量释放信号量 中断中释放任务中释放 计数信号量互斥锁 创建互斥信号量拿锁放锁 递归互斥锁 获取递归信号量释放递归信号量 参考 FreeRtos 简述 Fre
  • 【转存】SpringBoot 中的自带工具类,快速提升开发效率

    断言 断言是一个逻辑判断 xff0c 用于检查不应该发生的情况 Assert 关键字在 JDK1 4 中引入 xff0c 可通过 JVM 参数 enableassertions开启 SpringBoot 中提供了 Assert 断言工具类
  • Mybatis-plus BindingException问题

    原因 xff1a 找不到 mapper xml 问题 解决方法 xff1a 去掉引用 mybatis plus lt dependency gt lt groupId gt com baomidou lt groupId gt lt art
  • 年度成果发布 | 百度超级链精选案例集正式上线!

    关注百度超级链微信公众号回复 案例集 获得电子版精选案例集 近年 xff0c 随着数字经济的发展 xff0c 区块链作为新基建的潜力逐渐被挖掘 xff0c 极大地发挥出其公开透明 高效便捷 互联互通的优势 xff0c 正在逐步提升社会信息交
  • Linux之Ubuntu入门篇[笔记自用]

    CMD 一 linux常用命令 lscd 点表示当前目录 点点当前目录的上一级目录 当前用户目录 放回上一次目录 pwduname 用于显示系统信息clear 清屏catsudo 以管理员运行cp 文件拷贝su 切换用户 sudo su x
  • Mysql 主从同步状态检查

    show slave status G 参数详解 1 Slave IO State SHOW PROCESSLIST输出的State字段的拷贝 Master User 被用于连接主服务器的当前用户 Master Port 当前的主服务器接口