如果 MongoDB 副本集节点在初选中找不到多数票,它会在哪种状态下结束?

In which state a MongoDB replica set node ends if it cannot find a majority during a primary election?

让我们考虑一个由三个节点组成的MongoDB副本集(节点1是主节点,节点2和3是辅助节点)并且发生网络分区,因此节点1失去与2和3的连接(但是2和3相互连接)。

因此,最后 Node2 和 Node3 将选出一个新的主节点(因为它们在分区中拥有大多数节点)。因此,其中一个(取决于优先级、投票和 oplog 时间)将以 PRIMARY 结束,另一个以 SECONDARY 结束。

但是,当旧主节点(节点 1)意识到它不再是主节点时,它将转换到哪个状态?我指的不是从节点 2 或节点 3 的角度 来看 的状态(我猜会将 Node1 视为 DOWN),而是指节点 1 自己看到的状态。

我已经查看了 replica set states in MongoDB official documentation,但我没有在那里找到明确的答案。

谢谢!

节点 1 应成为辅助节点。

您可以通过对部署进行分区(通过 kill -9 处理进程或在防火墙处丢弃流量)、连接到节点 1 并在其上 运行 ismaster 来测试这一点。 ismaster 响应字段的含义是 here.

每个节点都通过心跳跟踪其他副本集成员的当前状态。大约在节点 2 和 3 意识到节点 1 没有响应它们时,节点 1 将意识到节点 2 和 3 没有响应它,因此它应该记录一些类似

的内容

can't see a majority of the set, relinquishing primary

然后过渡到二级