You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

双主复制故障恢复:服务器重启后如何实现数据追同步?

嘿,针对你在树莓派3 Debian服务器上搭建的双主复制架构问题,我来给你详细拆解下~

服务器1修复重启后会自动同步吗?

这得看你双主复制的配置细节:

  • 如果你的复制是**基于GTID(全局事务标识符)**配置的,并且开启了自动重连机制,那服务器1重启后,会自动识别自己停机期间服务器2上产生的所有未同步事务,主动从服务器2拉取并应用,一般能自动恢复双主同步状态。
  • 但如果是传统的基于二进制日志位置的复制,而且服务器1停机时间较长,服务器2的二进制日志已经被自动清理(比如超过了expire_logs_days设置的保留天数),那服务器1就找不到需要同步的起始日志位置,这时就没法自动同步了,得手动介入。
无法自动同步时,如何实现数据追同步?

如果遇到自动同步失败的情况,可以按以下步骤手动完成数据追平:

  1. 锁定服务器1为只读状态:先暂停服务器1的写入操作,防止同步过程中出现数据冲突,以MySQL为例,执行命令:
    FLUSH TABLES WITH READ LOCK;
    
    (如果是其他数据库,执行对应的只读锁定命令即可)
  2. 在服务器2上生成全量数据快照:导出服务器2的最新数据,同时记录当前的二进制日志位置,MySQL示例命令:
    mysqldump -u root -p --all-databases --master-data=2 > server2_full_backup.sql
    
    这个备份文件里会包含服务器2当前的binlog文件名和位置,后续同步会用到。
  3. 将快照传输到服务器1:用scp命令在局域网内传输,比如:
    scp pi@服务器2的IP:/home/pi/server2_full_backup.sql pi@服务器1的IP:/home/pi/
    
  4. 在服务器1上导入快照:把备份的数据导入服务器1,MySQL示例:
    mysql -u root -p < /home/pi/server2_full_backup.sql
    
    导入完成后,解锁服务器1的写入权限:
    UNLOCK TABLES;
    
  5. 重新配置双向复制关系:在服务器1上执行CHANGE MASTER TO命令,指向服务器2的最新binlog位置(信息在备份文件的开头注释里),MySQL示例:
    CHANGE MASTER TO
    MASTER_HOST='服务器2的IP',
    MASTER_USER='复制账号',
    MASTER_PASSWORD='复制密码',
    MASTER_LOG_FILE='备份文件里的binlog文件名',
    MASTER_LOG_POS=备份文件里的binlog位置;
    
    然后启动复制:START SLAVE;,同时记得在服务器2上也确认下指向服务器1的复制状态是否正常,确保双向复制恢复。
  6. 验证同步状态:在两台服务器上分别检查复制状态,MySQL用:
    SHOW SLAVE STATUS\G
    
    确认Slave_IO_Running和Slave_SQL_Running都显示Yes,就说明同步正常了。
额外注意事项
  • 双主架构一定要避免主键冲突,建议给两台服务器配置不同的自增步长(比如服务器1自增起始1、步长2;服务器2起始2、步长2)。
  • 定期检查复制状态,最好设置监控告警,一旦出现复制中断能及时发现处理,避免故障扩大。

内容的提问来源于stack exchange,提问作者Gabby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:28:19