配置非投票自管理副本集成员
非投票成员允许您添加额外的成员进行读取分发,数量超过最大七位投票成员。
要将成员配置为非投票成员,请使用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()方法,并将结果赋值给变量cfgcfg = 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 版本之间有所不同。