Docs 菜单

Docs 主页开发应用程序MongoDB Manual

调整副本集成员的优先级

在此页面上

  • 概述
  • 考虑因素
  • 步骤

副本集节点的 priority 设置会影响主节点选举的时间和结果。优先级较高的节点更有可能举行选举,也更有可能获胜。使用此设置可确保某些节点更有可能成为主节点,而其他节点永不会成为主节点。

该成员的 priority 设置的值决定了该成员在选举中的 priority。该数字越大,优先级便越高。

要修改优先级,请更新副本配置对象中的 members 数组。数组索引以 0 开头。请勿将此索引值与数组中副本集节点的 members[n]._id 字段的值混淆。

priority 的值可为介于 01000 之间的任意浮点数(即,十进制数)。priority 字段的默认值为 1

要阻止某一成员寻求当选为主节点,请为其分配优先级 0隐藏成员延迟成员会将 priority 设为 0

仲裁节点具有优先级 0

在计划的维护窗口期间调整优先级设置。重新配置优先级可能会迫使当前主节点退出,从而触发选举。选举前,主节点会关闭所有已打开的客户端连接。

members[n].prioritymembers[n].votes 具有以下关系:

  • 非投票(即 votes0) 节点的 priority 必须为 0。

  • priority 大于 0 的节点不能有 0votes

因此,增加非投票权节点的 priority 需要votes 设置为 1 并增加副本集投票节点的数量。在提高非投票节点的优先级之前,请考虑以下因素:

警告

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

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

1

mongosh中,使用rs.conf()检索副本集配置并将其分配给变量。例如:

cfg = rs.conf()
2

按照 members 数组中的配置更改每个节点的 members[n].priority 值。

cfg.members[0].priority = 0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2

这一系列操作会修改 cfg 的值,为 members 数组中定义的前三个节点设置优先级。

3

使用 rs.reconfig() 应用新配置。

rs.reconfig(cfg)

此操作使用 cfg 的值定义的配置,更新副本集的配置。

← 成员配置教程