MySQL 复制“追赶”更新保持更新记录

MySQL 复制“追赶”更新保持更新记录

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

大多数表都是基于日志的,仅具有插入和选择,因此它们在复制方面没有任何问题。

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

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

是否可以让复制保留具有最近更新列的记录?

如果没有(我的研究表明这是不可能的),我可以使用什么解决方案?

答案1

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

答案2

您描述的情况称为主-主环境中的裂脑问题。这种情况是指两个主服务器不知道对方的存在,并假设另一个主服务器已死而单独工作。这实际上是这种高可用性设置中最具挑战性的问题。为了正确处理这种情况,管理员应设置一个策略,指定当两个主服务器无法相互通信时哪个主服务器应该是主服务器,然后将所有数据库连接定向到主服务器。这通常由一个脚本实现,该脚本监视通信并在发生裂脑时重定向数据库连接。之后,失败的事务将需要同步回已关闭的主数据库。我见过 Xeround索赔他们的数据库服务提供自动化的主-主部署,以解决裂脑问题。

相关内容