确认从库复制状态正常,延迟接近0;2. 停止选定从库的复制线程并清除配置;3. 将该从库提升为新主库,启用二进制日志并创建复制用户;4. 记录新主库日志位置,重新配置其他从库指向新主库;5. 启动复制并验证状态,建议结合高可用工具实现自动切换。

在MySQL主从复制架构中,当主库出现故障或需要维护时,可能需要将某个从库切换为主库,继续提供写操作服务。这个过程称为“主从切换”或“故障转移”。以下是实现MySQL从库切换为主库的常用操作方法。
确认当前主从状态
在切换前,先检查主库和从库的复制状态,确保数据同步已完成或接近完成。
- 登录从库执行:SHOW SLAVE STATUS\G,查看以下关键字段:
- Slave_IO_Running 和 Slave_SQL_Running 应为 Yes
- Seconds_Behind_Master 值应接近 0,表示延迟小
- 记录从库的 Relay_Master_Log_File 和 Exec_Master_Log_Pos,用于比对数据一致性
停止从库复制线程
选择一个数据最完整的从库作为新的主库,停止其复制进程。
- 执行命令:STOP SLAVE;
- 可进一步执行:RESET SLAVE ALL; 清除从库复制配置(切换后不再作为从库使用时建议执行)
提升从库为主库
停止复制后,该从库即可作为新的主库对外提供写服务。
- 确保新主库的 my.cnf 中已开启 log-bin(启用二进制日志)
- 若其他从库还需继续同步,需在新主库上创建复制用户:
- CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
- GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
- 记下新主库的二进制日志文件名和位置:SHOW MASTER STATUS;
重新配置其他从库指向新主库
将剩余从库的复制源指向新的主库。
- 在其他从库上执行:
- STOP SLAVE;
- CHANGE MASTER TO MASTER_HOST='new_master_ip', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.xxxxxx', MASTER_LOG_POS=xxxxxx;
- START SLAVE;
- 再次执行 SHOW SLAVE STATUS\G 确认复制正常运行
基本上就这些。整个切换过程要确保数据不丢失,建议在切换前停止应用写入,或通过半同步复制机制提高可靠性。手动切换适用于小规模环境,生产环境建议结合MHA、Orchestrator等高可用工具自动完成切换。










