MySQL 主从复制管理:暂停、恢复、清理主从关系及命令执行位置

1. MySQL 主从复制原理

MySQL 主从复制(Replication)通过主库 Binlog、从库 I/O 线程和 SQL 线程,实现数据同步。

复制代码
MySQL A(主库)
      |
      | Binlog
      ↓
MySQL B(从库)
      |
      ├── IO线程:接收主库Binlog
      ├── Relay Log:存储接收到的日志
      └── SQL线程:应用日志中的事务

核心原则:主从复制的暂停、恢复、清理命令,通常都在从库执行。

2. 主从复制常用命令

以下以 MySQL 8.0.22 及以上版本为例。

操作 SQL命令 执行位置
查看复制状态 SHOW REPLICA STATUS\G 从库
暂停复制 STOP REPLICA; 从库
恢复复制 START REPLICA; 从库
停止IO线程 STOP REPLICA IO_THREAD; 从库
停止SQL线程 STOP REPLICA SQL_THREAD; 从库
重置复制状态 RESET REPLICA; 从库
清除复制连接关系 RESET REPLICA ALL; 从库

2.1 暂停主从复制

复制代码
STOP REPLICA;

作用:

  • 停止从库 I/O 和 SQL 复制线程。

  • 保留原有主从复制配置。

  • 不删除已有业务数据。

恢复复制:

复制代码
START REPLICA;

恢复后检查:

复制代码
SHOW REPLICA STATUS\G

正常运行时,重点关注:

复制代码
      参数	           正常值	           含义
Replica_IO_Running	    Yes	       从库正常连接主库并接收 Binlog
Replica_SQL_Running	    Yes	       从库正常执行 Relay Log
Seconds_Behind_Source	0(理想)   复制延迟参考值,越小越好
Last_IO_Errno	        0	       没有记录到导致 IO 线程停止的错误
Last_SQL_Errno      	0	       没有记录到导致 SQL 线程停止的错误

同时检查 Last_IO_Error、Last_SQL_Error 和复制延迟。

2.2 重置主从复制状态

复制代码
-- 先停止复制
STOP REPLICA;

-- 重置复制状态
RESET REPLICA;

作用:

  • 删除 Relay Log(中继日志)。

  • 重置复制位点和相关复制元数据。

  • 保留主库连接参数。

  • 不直接删除已有业务表数据。

  • 不清除 GTID 已执行历史。

注意:该命令会删除尚未应用完成的 Relay Log,不可当作普通日志清理命令使用。 重建复制前必须重新确认数据一致性和同步位置。

2.3 清除主从复制关系

复制代码
STOP REPLICA;

RESET REPLICA ALL;

作用:

  • 停止并清除当前从库的复制配置。

  • 删除 Relay Log。

  • 清除主库地址、复制用户等连接信息。

  • 不直接删除原有普通业务数据。

执行后可检查:

复制代码
SHOW REPLICA STATUS\G

普通单通道复制配置被完全清除后,通常返回:

复制代码
Empty set

注意: RESET REPLICA ALL****属于高风险配置清理操作,仅适用于经过审批的复制解除或重建场景。

3. 双向复制在哪个节点执行?

假设 MySQL A 和 MySQL B 配置了双向复制:

复制代码
MySQL A  ←────→  MySQL B
         双向复制
操作目标 执行节点
暂停 A → B 复制 B
恢复 A → B 复制 B
清除 B 接收 A 的复制配置 B
暂停 B → A 复制 A
恢复 B → A 复制 A
清除 A 接收 B 的复制配置 A

因为在双向复制中,两台服务器同时承担对方的 Replica 角色。

特别注意:如果存在多个复制通道,必须先确认通道名称,使用 FOR CHANNEL 指定操作对象,避免误操作其他复制链路。

4. MySQL 5.7 与 8.0 命令对照

MySQL 5.7 MySQL 8.0.22+
SHOW SLAVE STATUS\G SHOW REPLICA STATUS\G
STOP SLAVE; STOP REPLICA;
START SLAVE; START REPLICA;
RESET SLAVE; RESET REPLICA;
RESET SLAVE ALL; RESET REPLICA ALL;

MySQL 8.0.22 起推荐采用 REPLICA 相关命令。

5. 生产环境注意事项

  1. 执行命令前先确认当前节点、主从拓扑及 MySQL 版本。

  2. 暂停复制可能造成主从延迟扩大,需关注主库 Binlog 保留周期。

  3. 清理复制配置前,必须备份配置、核对 GTID 或 Binlog 位点。

  4. RESET REPLICA ALL 不会清除 GTID 已执行历史。

  5. 不要将 RESET MASTER 或 RESET BINARY LOGS AND GTIDS 当作普通的解除主从命令。

  6. 暂停复制后还应关注 MySQL 重启时是否自动启动复制线程。

6. 总结

MySQL 主从管理记住四句话:

  • 暂停复制:STOP REPLICA

  • 恢复复制:START REPLICA

  • 重置复制状态:RESET REPLICA

  • 清除复制连接:RESET REPLICA ALL

最重要的一点:谁接收复制,谁就负责执行对应的复制管理命令。

官方参考资料:

相关推荐
yzs871 小时前
openGauss branch diff能力解析
数据库·oracle
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_parameters_from_context调用流程与实战(十六)
linux·运维·ffmpeg·音视频进阶·ffmpeg音视频·车载音视频进阶
霂鳯1 小时前
新手勇闯网络安全 | MySQL复习
mysql·安全·web安全
隔窗听雨眠1 小时前
从存储引擎到执行计划:OceanBase高效运维的调优逻辑与工程实践
运维·oceanbase
郭小李1 小时前
spring中@Transactional注解对事务的支持
数据库·spring·oracle
运维行者_1 小时前
供应链安全成最大风险源,企业如何构建可控的运维体系?
运维·开发语言·网络·数据库·安全·云计算·流量监控
高铭杰1 小时前
Postgresql源码(160)新的共享内存注册机制,为动态调整shared_buffers打基础
数据库·postgresql
xiaoyunxuexibiji2 小时前
采购协同管理:从备货计划、进度确认到到货签收
大数据·运维·人工智能
数据库小学妹2 小时前
AI Agent连数据库怎么控权限?只读账号的4个缺口
数据库·人工智能·安全·数据库权限·审计·ai数据库·只读账号