问题描述
我尝试在 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,...