从概念上讲,Master-Master复制如何工作?
我认为碰撞是一种常见现象,需要以某种方式解决。
答案 0 :(得分:2)
主 - 主复制(更一般地说 - 多主复制)在概念上起作用,假设冲突不常见,只保持整个系统松散一致,在主服务器之间进行异步通信更新,最终违反了基本的ACID属性。 / p>
由于carmbrester正确建议(并且独立于MySQL),密钥生成是针对冲突的重要缓解策略(例如,生成相同的ID)。除此之外,我认为关键是将多主系统中的冲突视为乐观锁定模型中的冲突。两者都成功,因为与收益相比,剩余风险通常较小。
然而,冲突可能发生(正如您所建议的),并且不同的供应商提供不同的策略。例如,Oracle允许DBA从一系列冲突解决方案(时间戳,关联性等)和次要操作(在队列中记录错误等)中进行选择。在http://www.orafaq.com/wiki/Advanced_Replication_FAQ#What_happens_if_two_or_more_sites_change_the_same_data.3F
查看有关Oracle的更多详细信息答案 1 :(得分:0)
上下文很重要,但这里有一些关于MySql如何处理场景的信息...
读取每个主服务器的binlog并在另一个主服务器上执行。配置自动增量偏移使得主键不会发生冲突,即其中一个主设备将配置一个偏移量,导致在自动增量期间使用偶数,而另一个主设备将被配置为在自动期间使用奇数-Increment。
对于也可以使用双主机配置的MySql群集复制,您可以按this link中所述配置冲突的处理方式。