【问题标题】:What kind of consistency guarantee does a multi-master-master innodb cluster guarantee?多主-主innodb集群保证什么样的一致性保证?
【发布时间】:2017-08-18 04:03:36
【问题描述】:

假设我有一个多主 innodb 集群(只有 2 个数据节点),其中客户端通过 mysql 路由器发出请求。假设两个客户端几乎同时在两个节点上更新数据库中某个表上的特定行。现在两个节点在同一行中都有不同的数据。在多主 innodb 集群中如何协调这些类型的冲突?

【问题讨论】:

  • 这将取决于您的具体设置,但如果您遵循指南,基本规则是:只有一个冲突事务可以提交,其他事务将失败(这反过来会导致所谓的“热点”,如果您有一些经常更新的行,导致频繁回滚)。
  • @Solarflare 在两台服务器上的多主 innodb 集群事务上可能会成功。基本上,每个事务都发生在两个数据库服务器上。但是来自两台服务器的更改会相互复制。在这种情况下,哪个更新会胜出(同一行上的 2 个更新,但在 2 个不同的服务器上)?
  • 如果这可能发生,这是一个声明还是一个问题?在多主设置中,事务将在提交之前检查其他服务器,第一个获胜。

标签: mysql eventual-consistency data-consistency


【解决方案1】:

您的问题中的关键字“假设数据库中某个表上的特定行几乎同时由两个客户端在两个节点上更新。” 几乎强>

InnoDB 集群中的每个事务都分配了 GTID,基于 GTID 事务将按照创建(或确切提交)的顺序应用于所有集群实例。如果两个事务恰好同时提交,其中一个事务将被 InnoDB Cluster 失败。

【讨论】:

  • 全局事务标识符 (GTID) 是在源服务器(源)上创建并与提交的每个事务相关联的唯一标识符。此标识符不仅对它起源的服务器是唯一的,而且在给定复制设置中的所有服务器中都是唯一的。
猜你喜欢
  • 2020-06-20
  • 2019-01-15
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多