如果MongoDB副本集节点在初选中找不到多数,它将在哪种状态结束? 让我们考虑由三个节点组成的MangGDB副本集(节点1是主节点,节点2和3是次要的),并且发生网络分区,因此节点1失去连接到2和3(但是2和3彼此连接)。

如果MongoDB副本集节点在初选中找不到多数,它将在哪种状态结束? 让我们考虑由三个节点组成的MangGDB副本集(节点1是主节点,节点2和3是次要的),并且发生网络分区,因此节点1失去连接到2和3(但是2和3彼此连接)。,mongodb,replicaset,mongodb-replica-set,Mongodb,Replicaset,Mongodb Replica Set,因此,在最后,节点2和节点3将选择一个新的主节点(因为它们的分区中有大多数节点)。因此,其中一个(取决于优先级、投票和oplog时间)将作为主要结束,另一个作为次要结束 但是,当旧的主节点(节点1)意识到它不再是主节点时,它将转换到哪个状态?我不是从节点2或节点3的角度来指状态(我猜会将节点1视为向下),而是指节点1看到自己的状态 我已经看过了,但还没有找到一个明确的答案 谢谢 节点1应成为辅助节点 您可以通过对部署进行分区(通过kill-9关闭进程或在防火墙上丢弃流量)、连接到节点1并在其上运

因此,在最后,节点2和节点3将选择一个新的主节点(因为它们的分区中有大多数节点)。因此,其中一个(取决于优先级、投票和oplog时间)将作为主要结束,另一个作为次要结束

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

我已经看过了,但还没有找到一个明确的答案


谢谢

节点1应成为辅助节点


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

节点1应成为次要响应字段


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

每个节点通过心跳跟踪其他副本集成员的当前状态。当节点2和3意识到节点1没有响应它们时,节点1会意识到节点2和3没有响应它们,因此它应该沿着

看不到集合的大部分,放弃主


然后它将转换到辅助。

每个节点通过心跳跟踪其他副本集成员的当前状态。当节点2和3意识到节点1没有响应它们时,节点1会意识到节点2和3没有响应它们,因此它应该沿着

看不到集合的大部分,放弃主

然后它将过渡到二级