配置无投票权的自管理副本集成员
无投票权成员允许您在最多七个投票成员之外添加其他成员以进行读取分布。
要将节点配置为无投票权,请使用 replSetReconfig
命令或其 mongosh
辅助方法rs.reconfig()
设立其members[n].votes
和members[n].priority
值设置为0
。 无投票权的副本集节点的 必须 priority
为0
。
注意
副本重新配置一次只能添加或删除不超过一个投票副本集节点。要修改多个节点的投票,请发出一系列 replSetReconfig
或 rs.reconfig()
操作,一次修改一个节点。要了解更多信息,请参阅重新配置一次最多可以添加或删除一个投票节点。
步骤
以下过程将单个副本集从节点配置/转换为无投票权。要将主节点转换为无投票权,在执行该过程之前,必须先使用 replSetStepDown
或其 Shell 助手 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
替换为要修改的成员的数组索引位置。members
数组的索引为零,其中数组中的第一个元素的索引位置为0
。members
数组中的节点的数组索引位置与特定节点的members[n]._id
不同。不要 使用_id
引用members
中的任何节点的数组索引位置。- 4) 使用新配置重新配置副本集
使用
rs.reconfig()
方法,利用更新的副本集配置文档重新配置副本集。rs.reconfig(cfg);
警告
rs.reconfig()
shell 方法可以强制当前的主节点下台,从而导致选举。当主服务器向下运行时,mongod
会关闭所有客户端连接。 虽然这通常需要 10-20 秒,但请尝试在计划维护期间进行这些更改。避免重新配置包含不同 MongoDB 版本节点的副本集,因为验证规则可能因 MongoDB 版本而异。