ZBLOG

mysql主挂掉后,如何将备切换回主

在MySQL主从复制架构中,当主库(Master)宕机后,需要将从库(Slave)提升为新主库(Promote to Master),并确保其他从库重新指向新主库。以下是详细操作步骤:


1. 确认主库状态

首先确认原主库确实无法恢复(如硬件故障或长时间不可用):

  1. # 尝试连接原主库
  2. mysql -h [原主库IP] -u root -p

2. 选择并提升从库为新主库

2.1 确保从库数据一致

在目标从库上执行:

  1. STOP SLAVE;
  2. SHOW SLAVE STATUS \G

检查 Seconds_Behind_Master 是否为 0(表示数据已同步完成),且无报错。

2.2 重置从库角色

  1. RESET SLAVE ALL; -- 清除所有复制信息(MySQL 5.7+/8.0
  2. RESET MASTER; -- 如果该从库曾作为其他实例的主库,清理二进制日志

2.3 启用写操作

  1. SET GLOBAL read_only = OFF; -- 关闭只读模式

3. 配置其他从库指向新主库

在其他从库上执行:

  1. STOP SLAVE;
  2. CHANGE MASTER TO
  3. MASTER_HOST = '[新主库IP]',
  4. MASTER_USER = 'repl_user',
  5. MASTER_PASSWORD = 'password',
  6. MASTER_AUTO_POSITION = 1; -- GTID复制方式推荐
  7. START SLAVE;

4. (可选)原主库恢复后的处理

若原主库恢复后需降级为从库:

  1. RESET MASTER;
  2. CHANGE MASTER TO
  3. MASTER_HOST = '[新主库IP]',
  4. MASTER_USER = 'repl_user',
  5. MASTER_PASSWORD = 'password';
  6. START SLAVE;

5. 验证复制状态

在所有从库上检查:

  1. SHOW SLAVE STATUS \G

确认 Slave_IO_RunningSlave_SQL_Running 均为 Yes


关键注意事项

  1. GTID vs Binlog Position

    • GTID模式(推荐):使用 MASTER_AUTO_POSITION=1,避免手动定位日志位置。
    • Binlog模式:需记录故障前的主库 FilePosition
  2. 应用层配置

    • 更新应用连接字符串至新主库IP。
    • DNS或代理层(如HAProxy)需及时切换流量。
  3. 高可用工具

    • 考虑使用Orchestrator、MHA或Keepalived自动化故障转移。
  4. 数据一致性校验

    • 使用 pt-table-checksum + pt-table-sync(Percona Toolkit)修复差异。

通过以上步骤可完成人工切换。对于生产环境,建议提前演练并配置监控工具(如Prometheus + Grafana)实时检测复制延迟。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23587

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?