配置非投票自管理副本集成员
非投票成员允许您添加额外的成员进行读取分发,数量超过最大七位投票成员。
要将成员配置为非投票成员,请使用replSetReconfig
命令 或 其mongosh
辅助方法 rs.reconfig()
,将 members[n].votes
和 members[n].priority
的值设置为 0
。非投票副本集成员 必须 有一个 优先级
为 0
。
注意
副本集重新配置每次只能添加或删除 最多一位 投票副本集成员。要修改多个成员的投票数,请依次发出一系列 replSetReconfig
或 rs.reconfig()
操作来修改每个成员。有关更多信息,请参阅每次最多只能添加或删除一位投票成员。
步骤
以下步骤将单个 次要 副本集成员配置为非投票成员。要将 主要 成员配置为非投票成员,您必须首先使用 replSetStepDown
或其壳辅助 rs.stepDown()
成功将主要成员降级,然后再执行此步骤。
- 1) 连接到副本集主要节点
mongosh --host "<hostname>:<port>" 将
<hostname>
和<port>
替换为主节点的主机名和端口号。包括您部署所需的任何其他参数。- 2) 获取副本集配置
在 shell 中执行
rs.conf()
方法,并将结果赋值给变量cfg
cfg = rs.conf(); - 3) 配置成员为非投票成员
要使副本集成员变为非投票成员,将它的
votes
和priority
设置为0
。cfg.members[n].votes = 0; cfg.members[n].priority = 0; 将
n
替换为要修改的成员的数组索引位置。数组的索引位置是 零索引,其中数组的第一个元素的索引位置为0
。数组中成员的索引位置与
members
数组中的members[n]._id
是不同的。请勿使用_id
来引用任何成员的数组索引位置。- 4) 使用新的配置重新配置副本集
使用
rs.reconfig()
方法使用更新的副本集配置文档重新配置副本集。rs.reconfig(cfg);
警告
rs.reconfig()
shell 方法可以强制当前主节点下线,这会导致 选举。当主节点下线时,mongod
关闭所有客户端连接。尽管这通常需要 10-20 秒,但请在计划维护期间尝试进行这些更改。避免重新配置包含不同 MongoDB 版本成员的副本集,因为验证规则可能在不同的 MongoDB 版本之间有所不同。