我已经build立了2个服务器的master-master复制,并在其中一个表中使用REPLACE INTO来更新表中的数据。 是否有可能两个服务器之间的链接closures,然后服务器1更新某一行,几秒钟后,服务器2更新同一行,当两个连接回来时,服务器2上更多的数据被来自服务器1的数据覆盖?
您刚刚发现为什么使用MySQL的master-master“复制”设置并不是一个好主意。 更糟糕的是,从服务器2更改的数据也会传播到服务器1,所以它们最终会在表的两个副本中产生不同(交换)的数据,并且永远不会知道。 除非您正在更改其中一列,而是按照过滤查询的方式进行过滤,而由于受查询影响的列计数差异(由MySQL复制器实现logging和检查),复制将中断(由于错误而停止) )。
如果你想用MySQL来进行这种设置,你应该使用MySQL集群 – 它有办法连贯地解决这种冲突 。 与“免费”的MySQL设置相比,授权将花费你$$$。