这里是该方案。2网服务器中的两个单独的位置,具有两个mysql数据库,与相同的表格。内数据的表也将相同的实时。

这里的问题。如果一个用户在任一位置的同时进入一个新的记录,进入相同的表格,说明在两个第一个桌子下面,那里的第三个记录在每个表格已经进入同时由不同的人。表中的数据是不再相同。这是最好的方式来维持这一数据仍然是相同的实时说明在第三个表下无论在哪里,更新采取的地方吗?这样,在插图中下面的而不是结束了3行,在每个表格,新的记录是复制的双向他们是插在两个表格创建2相同的表再次有4列的这段时间?

Server A in Location A
==============

Table Names
| ID| NAME  |
|-----------|
| 1 | Tom   |
| 2 | Scott |
|-----------|
| 3 | John  |
|-----------|

Server B in Location B
==============
Table Names
| ID| NAME  |
|-----------|
| 1 | Tom   |
| 2 | Scott |
|-----------|
| 3 | Peter |
|-----------|


Expected Scenario
===========
Table Names
| ID| NAME  |
|-----------|
| 1 | Tom   |
| 2 | Scott |
| 3 | Peter |
| 4 | John  |
|-----------|
有帮助吗?

解决方案

有不被从两位大师复制数据库获得多少性能。然而,有故障的漂亮一点,如果你编写你的应用程序是正确的。

主 - 主设置基本上是一样的从机主的设置,但有两个奴隶开始和您的配置文件的一个重要变化,在每个箱子。

主MySQL的1:

auto_increment_increment = 2
auto_increment_offset = 1 

主MySQL的2:

auto_increment_increment = 2
auto_increment_offset = 2

这两个参数保证当两个服务器战斗在出于某种原因主键,不重复杀复制。代替通过1递增的,任何自动递增字段将默认增量通过2.在一个框它将从1开始的偏移并运行序列1 3 5 7 9 11 13等。在第二框将在2开始偏移和沿着2 4 6 8 10 12等运行从涡流检测,自动递增似乎采取下一个免费号码,而不是一个已经之前离开后,点击 例如。如果服务器1插入第一3条记录(1 3和5)当服务器2个插入的第四,将给出的6键(未2,该闲置)。

一旦有设定,同时启动起来的作为奴隶。结果 然后检查两者都工作确定,同时连接到机器并执行命令SHOW SLAVE STATUS,你应该注意,这两个Slave_IO_RunningSlave_SQL_Running都应该说“是”,在每个箱子。

然后,当然,在表中创建几个记录,并确保一个盒仅插入奇数主键,另一个是只递增偶数的。

然后完成所有的测试,以确保你可以用它复制到其他执行上的每个方块中的所有标准应用。

这是比较简单的,一旦它会。结果 但正如已经提到,MySQL的劝阻,并建议您确保编写应用程序代码时,你注意到这个功能。

编辑:我想这是理论上的可能,如果你确保偏移量是否正确等,以增加更多的主人。你可能会更现实,虽然,添加一些额外的奴隶。

其他提示

MySQL不支持同步复制,但是,即使它,你可能不希望使用它(不能采取等待其他服务器上的每一笔交易同步提交对性能的影响)。

您将不得不考虑更合适的建筑解决方案,以它 - 有第三方产品,将做一个合并和解决以预定的方式发生冲突 - 这是唯一的办法真正

期待您架构的功能以这种方式是幼稚的 - 没有“容易解决”对任何数据库,而不仅仅是MySQL的

时,重要的是的UID是一样的吗?或者你会招待有一个表或列映射远程UID到本地UID和编写自定义同步代码的对象要复制跨越,做的UID为外键列的任何必要的映射的思想,等等?

只有这样,才能确保你的表都是同步的是建立一个2-方式之间的复制的数据库。

但是,MySQL只允许一方式复制的,所以你不能简单地解决您的问题,在这种配置。

到是清楚的,你可以"设定"有2种方法复制,但MySQL AB 阻碍这个.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top