调整副本集成员的优先级
在本页面
Overview
副本集成员的priority
设置同时影响主要对象的elections的时间和结果。优先级较高的成员更有可能举行选举,也更有可能赢得选举。使用此设置可确保某些成员更有可能成为主要成员,而另一些成员永远不会成为主要成员。
成员的priority设置的值确定选举中的成员的priority。数字越高,优先级越高。
Considerations
若要修改优先级,请更新副本配置对象中的members数组。数组索引以0
开头。请勿将此索引值与数组中副本集成员的members[n]._id字段的值混淆。
priority的值可以是0
和1000
之间的任何浮点数(即十进制)。 priority
字段的默认值为1
。
要阻止成员寻求选举为主要成员,请将其优先级设置为0
。 Hidden members和delayed members将priority
设置为0
。
在 3.2 版中进行了更改:-非投票成员的priority必须为 0.
在 3.6 版中进行了更改:从 MongoDB 3.6 开始,仲裁者的优先级为0
。将副本集升级到 MongoDB 3.6 时,如果现有配置的仲裁者的优先级为1
,则 MongoDB 3.6 会将仲裁器的优先级重新配置为0
。
在计划的维护时段内调整优先级设置。重新配置优先级可能会迫使当前的主数据库降级,从而导致选举。选举前,主要服务器将关闭所有打开的client连接。
Procedure
Warning
-
rs.reconfig() shell 方法可以强制当前主节点降级,从而导致election。当主服务器降级时,mongod关闭所有 Client 端连接。尽管这通常需要 10 到 20 秒,但请尝试在计划的维护期间进行这些更改。
-
避免重新配置包含不同 MongoDB 版本成员的副本集,因为验证规则在 MongoDB 版本之间可能有所不同。
将副本集配置复制到变量。
在mongo shell 中,使用rs.conf()检索副本集配置并将其分配给变量。例如:
cfg = rs.conf()
更改每个成员的优先级值。
按照members数组中的配置,更改每个成员的members[n].priority值。
cfg.members[0].priority = 0.5
cfg.members[1].priority = 2
cfg.members[2].priority = 2
此操作序列修改cfg
的值以设置members数组中定义的前三个成员的优先级。
为副本集分配新配置。
使用rs.reconfig()来应用新的配置。
rs.reconfig(cfg)
此操作使用值cfg
定义的配置更新副本集的配置。