0

我们正在运行一个标准的 Mysql 主/从复制系统,该系统已经运行了几年。事实上,我们能够通过使用从数据库(在将其变为主数据库之后)从服务器中断(导致主数据库离线)中恢复得非常好。

无论如何,导致我们问题的问题发生在我们恢复服务器并将原来的 Master 恢复为 Master 并将原来的 slave 恢复为 Slave 之后。

这是因为我是个白痴——而不是其他任何原因!

基本上,从属服务器上发生了写入——这意味着由于主键重复错误,无法复制主服务器上同一张表上的写入。

正如我所说,我的错。

我可以从从属设备中删除错误写入的记录 - 从而从从属设备中删除冲突的 ID,但我想要来自主数据库的记录。

我的问题是:我知道我可以通过跳过来自 Master 的相关查询(通过将 SQL_SLAVE_SKIP_COUNTER 设置为 1)来“修复”复制——但这意味着我会丢失来自 Master 的记录。

那么,有没有办法“重放”错误的复制写入?基本上将复制指向一个查询?

或者我是否必须经历删除我的从属设备、从我上次成功备份中重新填充它并再次将其设置为从属设备的整个过程?

提前谢谢了。

4

2 回答 2

0

答案实际上是盯着我的脸(并非总是如此!)。

重复的主键错误是由我在从属设备上插入并在主设备上插入同一张表引起的 - 这意味着两个新记录具有相同的 ID。

对我来说幸运的是,我不需要在 Slave 上插入,所以我只是删除了它——这意味着只有一条具有主键值的记录。

我只需要一种方法来让复制尝试复制记录 - 这很容易。

只需重新启动奴隶!

所以:

mysql root:(none)>START SLAVE;
Query OK, 0 rows affected (0.03 sec)

mysql root:(none)> _
于 2012-08-30T09:27:17.537 回答
0

如果它是一个简单的修改/更新/...你为什么不简单地在主服务器上播放它(手动或从从属二进制日志中获取它,如果你有的话),关闭从属进程的从属进程,然后设置新的复制指针(文件和位置)在从机上(显示主机状态;在主机上),然后重新启动从机?

于 2012-08-30T02:38:40.303 回答