文档菜单
文档首页
/
MongoDB 手册
/ / /

调整自管理副本集成员的优先级

本页内容

  • 概述
  • 考虑因素
  • 过程

优先级设置会影响副本集成员选举为主节点的时机和结果。优先级较高的成员更有可能发起选举并赢得选举。使用此设置可以确保某些成员更有可能成为主节点,而其他成员则不可能成为主节点。选举的值决定了成员在选举中的优先级。数值越高,优先级越高。

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

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

priority的值可以是任何在01000之间的浮点数。默认值是1

要将成员从寻求成为主节点的选举中排除,请将其优先级设置为0。隐式成员和延迟成员的优先级都设置为0

仲裁者的优先级是0

在计划维护窗口期间调整优先级设置。重新配置优先级可能会迫使当前主节点降级,导致选举。在选举之前,主节点会关闭所有开放的客户端连接。

members[n].prioritymembers[n].votes之间的关系如下

  • 非投票成员(即votes0)必须具有priority为0。

  • 具有优先级大于0的成员不能有0votes

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

警告

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

  • 避免重新配置包含不同MongoDB版本成员的副本集,因为验证规则可能在不同MongoDB版本之间有所不同。

1

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

cfg = rs.conf()
2

更改每个成员的members[n].priority值,如配置在members数组中。

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 值定义的配置来更新副本集的配置。

返回

非投票成员