我在同一个网络上有两台计算机,采用主从复制设置。
为了测试故障转移,我直接将一些数据插入从属数据库。因此,现在从属数据库包含的信息比主数据库多。
现在我想让主服务器与从服务器再次同步,以恢复真正的主从设置。我该怎么做?
答案1
我们不要称它们为“主”和“从”,而是这样概括它们:
- HostA:最初的“主人”
- HostB:最初的“奴隶”
当您直接将数据插入 HostB 时,HostA 落后于二进制 oplog。您首先需要通过使用以下命令将 HostA 设置为 HostB 的从属服务器来克服此问题CHANGE MASTER TO
(http://dev.mysql.com/doc/refman/5.0/en/change-master-to.html)。这应该会导致 HostA 与 HostB 同步。
一旦 HostA 赶上了 HostB,您将需要重置 HostA 的二进制日志并将其提升为主服务器。
- 在 HostA 上:
RESET MASTER;
- 在 HostB 上:
CHANGE MASTER TO
...
如需了解更多信息,请查看http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html#figure_replication-redundancy-after
答案2
替代解决方案:
- 停止 SLAVE 和 MASTER。
- 运行像 Navicat 这样的程序来将数据从 SLAVE 同步到 MASTER。
- 重置从站和主站。
- 启动主站和从站。
数据应该可以正常传输。