首页/数据/数据库速查/故障切换(Failover)手动流程
主从复制与高可用53 条

故障切换(Failover)手动流程

主库宕机时的手动切换:确认故障不可恢复 → 评估可接受的数据丢失窗口 → 提升数据最新的从库 → 隔离旧主(fencing)→ 重建拓扑。

数据库速查数据更新于 2026-10-12
  • ① 确认主库确实宕机(多路探测,防误判)
  • ② 选择 GTID 最完整的从库
  • ③ 提升该从库(取消只读、清复制元数据)
  • ④ fencing 旧主:断电/网卡禁用/权限回收,防止带病复活
  • ⑤ 其他从库改挂新主;应用切流;记录丢失事务窗口

提升与改挂

提升与改挂
-- 提升(目标从库)
STOP REPLICA;
RESET REPLICA ALL;
SET GLOBAL super_read_only = OFF;
SET GLOBAL read_only = OFF;
-- 其他从库改挂新主
STOP REPLICA;
CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.11', SOURCE_USER='repl',
  SOURCE_PASSWORD='***', SOURCE_AUTO_POSITION=1;
START REPLICA;
GTID 环境下各从库可能进度不同:切换前比较 gtid_executed,选择超集节点,避免丢更多事务。

易错点

  • 没做 fencing:旧主恢复后半同步/网络重连造成双主双写
  • 选择延迟最大的从库提升:能接受的丢失窗口没评估就切

数据来源与参考

  • MySQL 8.0 Reference Manual: Failover
  • MySQL 8.0 Reference Manual: GTID Sets

相关工具

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