代码之家  ›  专栏  ›  技术社区  ›  fgalan

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

  •  0
  • fgalan  · 技术社区  · 5 年前

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

    enter image description here

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

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

    我已经看过了 replica set states in MongoDB official documentation 但我还没有找到一个明确的答案。

    谢谢!

    0 回复  |  直到 5 年前
        1
  •  2
  •   Joe    5 年前

    每个节点都通过心跳跟踪其他副本集成员的当前状态。当节点2和3意识到节点1没有对其做出响应时,节点1会意识到节点2和节点3没有对其作出响应,因此它应该按照以下方式记录一些内容

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

    然后它将过渡到次要。

        2
  •  1
  •   D. SM    5 年前

    节点1应成为次要节点。

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

    推荐文章