防止次要成为主节点
概述
在副本集中,默认情况下所有从节点都有资格通过选举过程成为主节点。您可以通过使一些成员更有可能成为主要成员而其他成员不太可能或不能成为主要成员来影响这些选举的结果。
无法成为主要节点的次要节点也无法触发选举。在所有其他方面,这些次级与其他次级相同。
为了防止次要成员 在故障转移中成为主要成员,请为次要成员分配优先级,如此处所述。有关仅次要成员及其用途的详细说明,请参阅Priority 0 Replica Set Members 。0
注意事项
更新副本配置对象时,使用数组索引members
访问数组 中的副本集成员。数组索引以. 不要将此索引值与数组中每个文档中的 字段值混淆。0
members[n\]._id
members
NOTE
MongoDB 不允许当前主节点的优先级为
0
. 为防止当前主节点再次成为主节点,您必须首先使用 降级当前主节点rs.stepDown()
。
程序
本教程使用具有 5 个节点的示例副本集。
WARNING
- shell 方法可以强制当前
rs.reconfig()
primary 下台,从而导致选举。当主节点关闭时,mongod
关闭所有客户端连接。虽然这通常需要 10-20 秒,但请尝试在计划的维护期间进行这些更改。- 避免重新配置包含不同 MongoDB 版本节点的副本集,因为验证规则可能因 MongoDB 版本而异。
检索当前副本集配置。
该rs.conf()
方法返回一个副本集配置文档,其中包含副本集的当前配置。
在mongosh
,当连接到主节点时,运行该 rs.conf()
方法并将结果分配给变量:
cfg = rs.conf()
返回的文档包含一个 members
字段,该字段包含一组节点配置文档,副本集的每个节点一个文档。
分配优先级值0
。
为防止从节点成为主节点,请将从节点的更新members[n].priority
为0
.
要为副本集的节点分配优先级值,请使用数组索引访问成员配置文档。在本教程中,要更改的从节点对应于在2
数组 members
位置找到的配置文件。
cfg.members[2].priority = 0
在重新配置副本集之前,配置更改不会生效。
重新配置副本集。
使用rs.reconfig()
方法使用更新的副本集配置文档重新配置副本集。
将cfg
变量传递给rs.reconfig()
方法:
rs.reconfig(cfg)
相关文件
原文链接 - https://docs.mongodb.com/manual/tutorial/configure-secondary-only-replica-set-member/
译者:陆文龙