【发布时间】:2017-08-18 04:03:36
【问题描述】:
假设我有一个多主 innodb 集群(只有 2 个数据节点),其中客户端通过 mysql 路由器发出请求。假设两个客户端几乎同时在两个节点上更新数据库中某个表上的特定行。现在两个节点在同一行中都有不同的数据。在多主 innodb 集群中如何协调这些类型的冲突?
【问题讨论】:
-
这将取决于您的具体设置,但如果您遵循指南,基本规则是:只有一个冲突事务可以提交,其他事务将失败(这反过来会导致所谓的“热点”,如果您有一些经常更新的行,导致频繁回滚)。
-
@Solarflare 在两台服务器上的多主 innodb 集群事务上可能会成功。基本上,每个事务都发生在两个数据库服务器上。但是来自两台服务器的更改会相互复制。在这种情况下,哪个更新会胜出(同一行上的 2 个更新,但在 2 个不同的服务器上)?
-
如果这可能发生,这是一个声明还是一个问题?在多主设置中,事务将在提交之前检查其他服务器,第一个获胜。
标签: mysql eventual-consistency data-consistency