Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

防止自我管理的从节点变为主节点

在此页面上

  • Overview
  • Considerations
  • 步骤
  • 相关文档

在副本集中,默认情况下,所有从节点都有资格通过选举过程成为主节点。您可以使用 priority 使某些节点更有可能成为主节点,而使其他节点不太可能或无法成为主节点,从而影响这些选举的结果。

无法成为主节点的从节点也无法触发选举。这些从节点在所有其他方面都与其他从节点相同。

为防止从节点故障转移中成为主节点,请将从节点的优先级分配为 0,如下所述。有关仅从节点及其用途的详细说明,请参阅优先级 0 副本集成员。

更新副本配置对象时,使用数组索引访问 members 数组中的副本集成员。数组索引以 0 开头。请勿将此索引值与 members 数组中每个文档的 members[n]._id 字段的值混淆。

注意

MongoDB 不允许当前主节点的优先级为 0。如需防止当前主节点再次成为主节点,必须首先使用 rs.stepDown() 降级当前的主节点。

本教程使用有 5 个节点的样本副本集。

警告

  • rs.reconfig() shell 方法可以强制当前的主节点下台,从而导致选举。当主服务器向下运行时,mongod 会关闭所有客户端连接。 虽然这通常需要 10-20 秒,但请尝试在计划维护期间进行这些更改。

  • 避免重新配置包含不同 MongoDB 版本节点的副本集,因为验证规则可能因 MongoDB 版本而异。

1

rs.conf() 方法会返回副本集配置文档,其中包含副本集的当前配置。

mongosh中,当连接到主节点时,运行rs.conf()方法并将结果赋给变量:

cfg = rs.conf()

返回的文档包含 members 字段,该字段包含节点配置文档的数组,副本集的每个节点都有一个文档。

2

如需防止从节点成为主节点,请将从节点的 members[n].priority 更新为 0

如需为副本集的节点分配优先级值,请使用数组索引访问节点配置文档。在本教程中,要更改的从节点对应于在 members 数组的 2 位置找到的配置文档。

cfg.members[2].priority = 0

在重新配置副本集之前,配置更改不会生效。

3

使用 rs.reconfig() 方法,利用更新的副本集配置文档重新配置副本集。

cfg 变量传递给 rs.reconfig() 方法:

rs.reconfig(cfg)

后退

调整成员优先级