MySQL查看主从复制状态的方法与排错指南

 更新时间:2026年06月30日 08:42:15   作者:detayun  
本文介绍了MySQL主从复制的关键监控命令和排错方法,核心是通过SHOW SLAVE STATUS\G命令检查Slave_IO_Running和Slave_SQL_Running状态,判断同步是否正常,希望对大家有所帮助

一、最核心命令(在从库执行,Windows Navicat / CMD都能用)

登录从库MySQL,执行这条命令:

SHOW SLAVE STATUS\G

注意:结尾是反斜杠+G,不要用分号。

重点看这两行,决定同步是否正常:

Slave_IO_Running

  • Yes:从库成功连上主库,正在拉取二进制日志
  • Connecting:连不上主库(IP、端口、防火墙、账号密码问题)
  • No:连接失败

Slave_SQL_Running

  • Yes:日志正常执行,数据同步正常
  • No:数据冲突、主键重复、数据不一致,同步中断

二、几个关键状态字段解释

Last_IO_Error:IO线程报错信息,连不上主库时看这里。

Last_SQL_Error:SQL线程报错信息,同步中断、主键冲突都会写在这里。

Seconds_Behind_Master:主从延迟时间(单位秒)

  • 0:无延迟,实时同步
  • 数字越来越大:同步跟不上主库写入速度

Replicate_Wild_In_Table_List:可以查看你设置的【只同步部分表】的过滤规则是否生效。

三、主库上查看状态(主库执行)

查看主库二进制日志位置:

SHOW MASTER STATUS;

会显示当前binlog文件名和位置。

查看主库复制账号是否存在:

SELECT user,host FROM mysql.user WHERE user='repl';

四、Windows CMD 下查看完整日志(排查错误必备)

打开MySQL命令行

mysql -uroot -p

输入密码后执行:

SHOW SLAVE STATUS\G

五、常用启停命令

停止同步:

STOP SLAVE;

启动同步:

START SLAVE;

重置主从(重新搭建主从时使用):

RESET SLAVE ALL;

六、最简单的判断口诀

  • IO=Connecting:网络/账号/防火墙不通
  • IO=Yes,SQL=No:两张表数据不一致,主键冲突
  • 两项都是Yes:主从同步正常,指定数据表会自动备份

你把执行 SHOW SLAVE STATUS\G 的结果发给我,我可以直接帮你定位问题。

七、知识扩展

在 MySQL 中,查看主从同步状态最核心的命令是 SHOW REPLICA STATUS(MySQL 8.0.22 及之后版本,旧版使用 SHOW SLAVE STATUS)。这条命令会返回一条包含大量字段的记录,通过解读这些字段,可以全面判断复制的健康状况。

建议在从库(Slave/Replica)上执行,并使用 \G 以垂直格式输出,方便阅读长字段。

SHOW REPLICA STATUS\G

注意:如果你使用的 MySQL 版本低于 8.0.22,请将命令中的 REPLICA 替换为 SLAVE

需要重点关注的 6 个核心指标

在输出的大量字段中,以下几个字段是判断同步状态是否正常的核心:

Slave_IO_Running(IO 线程)

  • 负责从主库拉取二进制日志(binlog)。
  • 正常值Yes
  • 异常值No 或 Connecting。若为 Connecting,通常表示网络不通、主库不可达或复制用户密码错误;若为 No,则可能 IO 线程被停止或遇到致命错误。

Slave_SQL_Running(SQL 线程)

  • 负责将中继日志(relay log)中的事件在从库上重放执行。
  • 正常值Yes
  • 异常值No。通常表示 SQL 语句执行失败,例如主从库表结构不一致、数据冲突或主键重复。

Seconds_Behind_Master(同步延迟秒数)

  • 表示从库落后主库的时间(以秒为单位)。
  • 理想值0
  • 注意:如果该值持续增长或数值很大,说明从库处理速度跟不上主库写入速度。若该值为 NULL,则说明复制线程未运行或 IO 线程未连接。

Last_IO_Error / Last_SQL_Error(最近的错误信息)

当上述两个线程状态不是 Yes 时,这两个字段会显示具体的报错原因,是排查问题的第一手资料。

Master_Log_File 与 Read_Master_Log_Pos

表示 IO 线程已读取到的主库 binlog 文件名和位置。

Relay_Master_Log_File 与 Exec_Master_Log_Pos

  • 表示 SQL 线程已执行到的主库 binlog 文件名和位置。
  • 检查方法:对比这两组值,如果第一组(已读取)始终大于第二组(已执行),说明存在延迟。延迟越大,Seconds_Behind_Master 数值也会越大。

判断同步是否正常的流程

  • 登录从库,执行 SHOW REPLICA STATUS\G
  • 检查 Slave_IO_Running 和 Slave_SQL_Running 是否均为 Yes
  • 检查 Last_IO_Error 和 Last_SQL_Error 是否为空。
  • 检查 Seconds_Behind_Master 是否为 0(或在可接受的延迟范围内,比如小于 10 秒)。

排查复制故障的常用命令

查看具体错误日志

SHOW REPLICA STATUS\G

重点关注 Last_IO_Error 和 Last_SQL_Error 字段。

查看主库的同步状态(判断主库写入压力):

SHOW MASTER STATUS;

用于确认当前的 binlog 文件名和位置,方便从库管理员与 Master_Log_File 对比。

查看复制线程信息

SHOW PROCESSLIST;

在输出中查找 system user 相关的复制线程,可查看其当前工作状态。

其他常用的监控方式

使用 performance_schema

SELECT * FROM performance_schema.replication_connection_status\G
SELECT * FROM performance_schema.replication_applier_status\G

这些表提供了比 SHOW REPLICA STATUS 更结构化的数据,适合用于监控脚本。

使用第三方工具:如 pt-heartbeat(Percona Toolkit),这是一种更精确的延迟监控方法,适合对延迟要求较高的生产环境。

到此这篇关于MySQL查看主从复制状态的方法与排错指南的文章就介绍到这了,更多相关MySQL查看主从复制状态内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql最左前缀法则导致索引失效的解决

    mysql最左前缀法则导致索引失效的解决

    最左前缀是在使用innodb存储引擎索引时,需要遵守的法则,本文主要介绍了mysql最左前缀法则导致索引失效的解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • mysql 5.7.18 免安装版window配置方法

    mysql 5.7.18 免安装版window配置方法

    这篇文章主要为大家详细介绍了mysql 5.7.18 免安装版window配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Ubuntu系统安装mysql超详细步骤

    Ubuntu系统安装mysql超详细步骤

    这篇文章主要给大家介绍了关于Ubuntu系统安装mysql的相关资料,现在的软件越来越好安装,尤其是在ubuntu下安装软件,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法

    这篇文章主要介绍了阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法,需要的朋友可以参考下
    2017-07-07
  • MySQL 计算时间差(分钟)的三种实现

    MySQL 计算时间差(分钟)的三种实现

    本文主要介绍了MySQL 计算时间差(分钟)的三种实现,包含TIMEDIFF函数,TIMESTAMPDIFF函数和算术运算符这三种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • mysql服务设置远程连接如何解决1251 client does not support问题

    mysql服务设置远程连接如何解决1251 client does not su

    文章介绍了如何在远程主机上配置MySQL环境,并使用Navicat连接远程MySQL数据库的步骤,包括前期准备、mysql配置以及使用Navicat连接的过程
    2024-12-12
  • MySQL中索引的创建及删除方法

    MySQL中索引的创建及删除方法

    MySQL中的索引是一种特殊的数据结构,它的主要目的是为了加快数据的检索速度,下面这篇文章主要给大家介绍了关于MySQL中索引的创建及删除的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Mysql关于数据库是否应该使用外键约束详解说明

    Mysql关于数据库是否应该使用外键约束详解说明

    MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表,外键所在的表就是从表。外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性
    2021-10-10
  • MySQL为JSON字段创建索引方式(Multi-Valued Indexes 多值索引)

    MySQL为JSON字段创建索引方式(Multi-Valued Indexes 多值索引)

    这篇文章主要介绍了MySQL为JSON字段创建索引方式(Multi-Valued Indexes 多值索引),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 在linux服务器上配置mysql并开放3306端口的操作步骤

    在linux服务器上配置mysql并开放3306端口的操作步骤

    这篇文章主要介绍了在linux服务器上配置mysql并开放3306端口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论