为什么大多数 Galera 集群文档建议至少有 3 个节点作为典型设置?

tim*_*ine 3 mysql replication galera

Galera 文档和大多数实施此类设置的专家建议在 Galera 集群中至少有 3 个节点。这背后的原因是什么?

只有两个节点的集群设置本质上有缺陷吗?

Ric*_*mes 6

如果您想要真正的 HA(“高可用性”),则需要在 3 个不同位置的 3 个节点。

当一台机器出现故障时,其余节点投票并看到它们占多数。他们看到 3 个中的 2 个,因此他们声明自己是集群,而他们的兄弟姐妹在集群之外。如果死机重新上线,大多数人会与复活的机器交谈并决定如何修复它。所有这些都是自动的。

让我们稍微改变一下——3 台机器,但网络中断将其中一台与两台机器分开。如上所述,两者声明它们仍在集群中。那个没有多数的人意识到他不应该成为集群。所以,它装死(或什么)。

只有 2 个节点呢?-- 如果一个人死了,或者被孤立了,另一个人没有多数,所以它装死了。你没有集群,你被冲洗了。

2 + garbd -- 这是您拥有 2 台包含所有数据的机器,以及第三台小型“仲裁器”机器的地方。garbd 假装有数据,但实际上是空的。他投票,因此任何单台机器中断都可以使集群保持活力。

为什么我说“不同的地点”?如果您有一个 3 节点集群,所有 3 个节点都在同一建筑物的同一机架中,位于同一洪泛区,位于龙卷风路径上的同一地震断层上,该怎么办?一些灾难很可能会摧毁所有 3 个节点。没有哈。

我在http://mysql.rjweb.org/doc.php/galera 中还有一些关于 Galera 的评论和提示