主从切换需先确保数据一致,停止原从库复制并提升为新主库,再将原主库配置为从库并更新应用连接。

mysql主从切换是指将当前的主库(Master)和从库(Slave)角色互换,通常在主库出现故障或计划内维护时使用。切换后,原从库变为新的主库,原主库可恢复为新从库或其他用途。以下是标准的主从切换操作方法。
1. 确保主从数据一致
在开始切换前,必须确认主从数据已完全同步,避免数据丢失。
- 登录从库执行:
SHOW SLAVE STATUSG - 检查以下两个字段是否为
Yes:Slave_IO_Running: YesSlave_SQL_Running: Yes - 确认
Seconds_Behind_Master为 0,表示无延迟。
2. 停止从库复制进程
在原从库(即将提升为主库)上停止复制:
STOP SLAVE;
如果需要保留复制信息以备后续恢复,可记录当前的主库二进制日志位置:
SHOW SLAVE STATUSG
记下 Master_Log_File 和 Exec_Master_Log_Pos。
3. 提升从库为新主库
- 执行:
RESET SLAVE ALL;
清除从库复制配置。 - 此时该数据库已成为独立的主库,可接受写入操作。
4. 配置原主库为新从库(可选)
若原主库恢复正常,可将其配置为新主库的从库:
- 在原主库启动 MySQL 并确保服务正常。
- 执行 CHANGE MASTER 指令指向新的主库:
CHANGE MASTER TO<br> MASTER_HOST='new_master_ip',<br> MASTER_USER='repl',<br> MASTER_PASSword='repl_password',<br> MASTER_LOG_FILE='mysql-bin.xxxxxx',<br> MASTER_LOG_POS=xxxxxx;
- 启动复制:
START SLAVE; - 用
SHOW SLAVE STATUS验证状态是否正常。
5. 应用程序连接切换
修改应用程序的数据库连接配置,将写操作指向新的主库。建议使用中间件(如 proxySQL、MaxScale)或 dns 切换来降低影响。
注意事项
- 切换期间应暂停对原主库的写入,防止数据不一致。
- 确保所有节点开启
log-bin和server-id唯一。 - 建议在低峰期操作,并提前备份关键数据。
- GTID 模式下切换更简便,可通过
gtid_purged和gtid_executed快速定位同步点。
基本上就这些。只要步骤清晰,主从切换并不复杂,但务必谨慎操作,避免误导致数据异常。