6

在一个 3 节点副本集中,为什么当 2 关闭时,第三个变成 SECONDARY 而不是 PRIMARY?

我想在数据中心内有 2 个 mongod,在外部有一个,所以如果数据中心出现故障,我希望第三个外部 mongod 成为主节点。

没有和仲裁者是可能的吗?

4

2 回答 2

9

好的,找到回复:

http://tebros.com/2010/11/mongodb-arbiters-with-only-two-replicas/

发生了什么事?!事实证明,当一个 mongod 实例被隔离时,它不能投票给自己作为主实例。当你考虑它时,这是有道理的。如果网络链接断开并将您的两个副本分开,您不希望它们都将自己选为主要副本。所以在我的例子中,当 rep1-1 注意到它与副本集的其余部分隔离时,它使自己成为辅助并停止接受写入。

于 2012-08-26T11:11:50.787 回答
3

总是以 (cluster_participants/2) + 1 个节点关闭(假设您有奇数个参与者),集群进入只读模式。候选节点需要所有节点中的大多数被选为主节点。

例如,如果您有 5 个节点集群和 3 个节点被吹走,其他节点将保持为次要,因为它们都无法获得 3 票。

更多信息:http ://docs.mongodb.org/manual/core/replication-internals/#replica-set-election-internals

于 2012-09-13T19:01:22.127 回答