MySQL复制“赶上”更新保持较新的logging

我有两个MySQL集群,它们之间有Master-Master复制设置。

大多数表是基于日志的,只有插入和select,所以它们在复制时没有任何问题。

但是,我有几张表格,它们保存了实时系统的当前“状态”信息。 这些表中的条目被更新,并且具有显示其最后更新的时间戳字段。

当复制中断时,这两个群集可能正在写入相同的行。

是否有可能让复制保留具有最新更新列的logging?

如果不是(我的研究显示它不可能),我可以用什么解决scheme呢?

如果您正在寻找这种事务性粒度,您可能需要使用基于行的复制而不是基于语句的复制。

  • 基于语句的复制(SBR)通过二进制日志/中继日志传输需要在从节点上执行的SQL。
  • 基于行的复制通过二进制日志/中继日志传输实际的行级更改。 那些日志通常比SBR增长更快。
  • 请参阅我在2011年12月9日的DBA StackExchange和Aaron Brown对MySQL在不安全的SQL语句中切换模式的能力的评论

你描述的情况被称为主 – 硕士环境的裂脑问题。 这是当两位大师不知道对方的存在,而另一位主人死的时候单独工作。 这实际上是这种高可用性设置中最具挑战性的问题。 为了正确处理这种情况,pipe理员应该设置一个策略,指定当两个主设备不能相互通信时哪个主设备应该成为主设备,然后将所有的数据库连接指向主设备。 这通常是由一个脚本实现的,该脚本监视通信并在发生裂脑时重新指定数据库连接。 之后,失败的事务将需要被同步回到已closures的主数据库。 我已经看到,Xeround 声称他们的数据库服务提供了自动的主 – 主部署来处理脑裂问题。