赞
踩
将成员添加到副本集。要运行该方法,必须连接到副本集的主节点。
rs.add(host, arbiterOnly)
参数 | 类型 | 描述 |
host | 字符串或文档 | 将新节点添加到副本集中。指定为字符串或配置文档: {
|
arbiterOnly | 布尔 | 可选。仅在 <host> 值为字符串时才适用。如果为 true,则添加的主机是仲裁节点 |
向新的副本集中添加一个具有默认的优先级和投票权限的 Secondary 节点,
rs.add( { host: "mongodbd4.example.net:27017" } )
字符串格式
rs.add( "mongodbd4.example.net:27017" )
警告
在 MongoDB 5.0 之前,新增的节点仍然算作投票成员,尽管在数据保持一致之前,它们既不能服务于读取,也不能成为主节点。如果您运行的是 5.0 之前的 MongoDB 版本,并添加了 votes 和 priority 设置大于零的从节点,则可能会导致有大多数投票成员在线却无法选举主节点的情况。为避免出现这种情况,可考虑先添加 priority :0 和 votes :0 的新从节点。然后运行 rs.status(),确保成员已过渡到 SECONDARY 状态。最后,使用 rs.reconfig() 更新其优先级和投票。
1 添加一个无投票权,优先级为0的成员
rs.add( { host: "mongodbd4.example.net:27017", priority: 0, votes: 0 } )
2 查看副本集状态,确认新成员已经变为 SECONDARY 状态
rs.status()
3 重新配置副本集,使新成员可以投票,并且优先级
- var cfg = rs.conf();
-
- cfg.members[n].priority = 1; // Substitute the correct array index for the new member
- cfg.members[n].votes = 1; // Substitute the correct array index for the new member
-
- rs.reconfig(cfg)
其中的n是 members数组的索引
警告⚠️
rs.reconfig() 方法可以强制当前主节点退出,从而引发选举。主节点退出时,将 mongod关闭所有客户端连接。虽然这通常需要 10-20 秒,但请尝试在计划的维护期间进行这些更改。
避免重新配置包含不同 MongoDB 版本成员的副本集,因为不同 MongoDB 版本的验证规则可能不同。
rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } )
文档格式
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } )
字符串格式
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。