0

我尝试用 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 美国广播公司
2 xyz
3 pqr

系统_2

ID 价值
1 美国广播公司
2 xyz
3 pqr

系统_3

ID 价值
1 美国广播公司
2 xyz
3 pqr

现在说当 System_3 离线时,它在本地表中创建了一些条目,该条目将在其表中使用 id 4,同时其他两个在线系统,即 System_1、System_2,在它们各自的表中创建了一些也将使用 id 4 的条目具有复制功能的表。

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

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

4

1 回答 1

0

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

auto_increment_offset您结合可以避免重复键。

这样你可以确保 system_1 只给出 ids3, 6, 9, ...和 system_22, 5, 8, ...和 system_31, 4, 7, ...

于 2021-04-06T15:59:36.657 回答