复制中的Mysql ID重复问题

问题描述

我尝试在 3 个系统上实现 MysqL 复制。

在我的设置中,我有如下对

                (Master,Slave   )
                (System_1,System_2)
                (System_1,System_3)

                (System_2,System_1)
                (System_2,System_3)

                (System_3,System_1)
                (System_3,System_2)

因此,在此设置中,每个系统都是其他系统的主从系统。

每个系统都有本地数据库

现在在简单的情况下一切正常。但在测试中,我面临一个问题是...

说在某个时刻 System_3 断开连接,而不是此时所有 3 个系统都有一些条目,直到 id=3(主键和唯一键)。

系统_1

id 价值
1 ABC
2 xyz
3 pqr

系统_2

id 价值
1 ABC
2 xyz
3 pqr

系统_3

id 价值
1 ABC
2 xyz
3 pqr

现在说,当 System_3 离线时,它在本地表中创建了一些 ID 为 4 的条目,与此同时,其他两个在线系统,即 System_1、System_2 也创建了一些 ID 为 4 的条目在他们各自的表中复制。

现在说 System_3 上线,它将读取其他系统的 bin 日志文件,并尝试插入其他系统所做的更改以在 id 4 处进行复制。但是,boom System_3 已经在 id 4 处具有值。这里复制停止了。

>

我的问题是如何解决这个问题。

解决方法

这是主-主复制场景中的常见问题。处理它的一种方法是给每个系统一个 auto_increment_increment 的系统数量。

auto_increment_offset 结合使用可以避免重复键。

这样您就可以确保 system_1 只提供 ID 3,6,9,... 和 system_2 2,5,8,... 和 system_3 1,4,7,...