【发布时间】:2015-12-04 01:49:11
【问题描述】:
如 Galera 文档所述,集群使用同步复制。但再深入一点,有一些说法,Galera 只是“实际上”同步的。在节点上,提交必须通过“认证”而不是物理提交。我真的需要了解这部分来规划应用程序的架构。
所以我现在想知道以下哪种情况是正确的:
脚本 A 在事务中执行 UPDATE 大约需要 5 秒,而 COMMIT 也需要几秒钟。当脚本 A 立即完成时,脚本 B 紧随其后,例如在一秒钟内 HTTP-POST-Request 之后的 HTTP-Redirect。脚本 B 查询与脚本 A 不同的节点。
- 脚本 B 获得
UPDATE之前的状态,因为UPDATE仍然需要大约 4 秒才能完成。 - 脚本 B 获取
UPDATE之后的状态,因为COMMIT在所有节点的状态同步时结束。
如果有的话,哪一个是正确的?还是行为取决于配置?
【问题讨论】:
-
根据“为什么”更新缓慢,它的复制可能会非常快(使用基于行的复制)。
-
dba.stackexchange.com/a/54615 似乎涵盖了这一点。
-
@jkavalik 在dba.stackexchange.com/a/54615 上声明,给出过时数据的可能性很小?事实上,这篇文章在 percona faq percona.com/doc/percona-xtradb-cluster/5.5/faq.html 旁边,这是我在这里提出问题的原因。但对我来说,这似乎更像是一个编程问题,而不是一个管理问题。 5 秒有点被高估了,可能是 50 毫秒,可能是因为加入了不同的表或其他什么。重要的是,以下脚本 B 更快。但这是我第一次接触 Galera,也许我问错了问题。