首页/数据/数据库速查/计划内主从切换(Switchover)标准流程
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条
主从复制与高可用53 条
性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

计划内主从切换(Switchover)标准流程

计划切换要「先停写、追平、再切」:旧主设为只读停业务写入,等从库完全追平(GTID 集对齐),再把从库提升为主并切换应用连接。

数据库速查数据更新于 2026-10-12
  • ① 旧主 SET read_only=ON + 业务侧停写(或挂维护页)
  • ② 旧主记录最终 GTID:SELECT @@GLOBAL.gtid_executed
  • ③ 从库等待追平:确认 Executed_Gtid_Set ⊇ 旧主最终集
  • ④ 从库取消只读并 STOP REPLICA; RESET REPLICA ALL; 应用切连接
  • ⑤ 旧主作为新从库重新挂载(见重建从库条)

关键操作

关键操作
-- 旧主(第 1 步)
SET GLOBAL read_only = ON;
SELECT @@GLOBAL.gtid_executed;   -- 记为 final_set
-- 从库(第 3 步,等待追平)
SELECT WAIT_FOR_EXECUTED_GTID_SET('final_set', 60);
-- 从库(第 4 步,提升)
STOP REPLICA;
RESET REPLICA ALL;
SET GLOBAL super_read_only = OFF;
SET GLOBAL read_only = OFF;
切换窗口内「谁能写」必须唯一:应用连接串/代理层要同步切换,避免双写。

易错点

  • 追平判断用延迟=0:IO 已断时假追平;必须用 GTID 集比较
  • 应用连接没切完就放开从库写入:旧主恢复后回流数据混乱

数据来源与参考

  • MySQL 8.0 Reference Manual: Switchover
  • Oracle 官方切换最佳实践

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌