mysql双主模式下,业务使用的主服务器宕机,重启之后数据不一致导致主从关系断开,如何解决?

mysql双主模式下,业务使用的主服务器宕机,重启之后数据不一致导致主从关系断开,双机热备失效。
想请教一下这种情况有办法避免么,我自己测试的流程 149+150两台服务器,149业务主库,把149数据库关掉在150写入数据,重启之后数据都是自动恢复且主从关系保持连接,为什么到了生产环境就会有重复数据出现呢。这种情况有办法避免吗。

如果主服务器和从服务器之间的数据不一致,则可能是由于主服务器宕机导致的。您可以使用以下命令检查主从关系:

sql
SHOW MASTER STATUS;
SHOW SLAVE STATUS;
SHOW MASTER STATUS LIKE '%master_process_status%';
SHOW SLAVE STATUS LIKE '%master_process_status%';

以下内容部分参考ChatGPT模型:


在这种情况下,需要手动恢复数据一致性并重新建立主从关系。具体步骤如下:

  1. 停止双主复制,避免数据进一步不一致。

  2. 将备库中的数据备份到一个独立的目录,以便后续恢复。

  3. 恢复主库中的数据到备库,确保数据一致。

  4. 重新建立主从关系,启动双主复制。

  5. 检查复制是否正常,确保数据同步。

以下是具体的命令示例:

停止双主复制

STOP SLAVE;
CHANGE MASTER TO MASTER_HOST='', MASTER_PORT=3306, MASTER_USER='', MASTER_PASSWORD='', MASTER_AUTO_POSITION=0;
STOP SLAVE;

备份备库中的数据

mysqldump -h localhost -u root -p --single-transaction --master-data=2 --routines --triggers --all-databases > /backup/db_backup.sql

恢复主库数据到备库

mysql -h 192.168.1.149 -u root -p < /backup/db_backup.sql

重新建立主从关系

CHANGE MASTER TO MASTER_HOST='192.168.1.149', MASTER_PORT=3306, MASTER_USER='', MASTER_PASSWORD='', MASTER_AUTO_POSITION=0;
START SLAVE;

检查复制是否正常

SHOW SLAVE STATUS\G;

需要注意的是,在这个过程中需要停止业务的访问,以避免数据进一步不一致。同时,建议定期备份数据并测试恢复过程,以确保在出现故障时能够快速恢复数据。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快