【MongoDB】rs.add 将成员添加到副本集

将成员添加到副本集。要运行该方法,必须连接到副本集的主节点

rs.add(host, arbiterOnly)

|---------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 参数 | 类型 | 描述 |
| host | 字符串或文档 | 将新节点添加到副本集中。指定为字符串或配置文档: { _id: <int>, host: <string>, // required arbiterOnly: <boolean>, buildIndexes: <boolean>, hidden: <boolean>, priority: <number>, tags: <document>, secondaryDelaySecs: <int>, votes: <number> } * 如果是字符串,请指定新节点的主机名和可选端口号。 |
| arbiterOnly | 布尔 | 可选。仅在 <host> 值为字符串时才适用。如果为 true,则添加的主机是仲裁节点 |

举例

向一个新的副本集中添加一个 Secondary 节点

向新的副本集中添加一个具有默认的优先级和投票权限的 Secondary 节点,

文档格式

bash 复制代码
rs.add( { host: "mongodbd4.example.net:27017" } )

字符串格式

bash 复制代码
rs.add( "mongodbd4.example.net:27017" )

警告

在 MongoDB 5.0 之前,新增的节点仍然算作投票成员,尽管在数据保持一致之前,它们既不能服务于读取,也不能成为主节点。如果您运行的是 5.0 之前的 MongoDB 版本,并添加了 votes 和 priority 设置大于零的从节点,则可能会导致有大多数投票成员在线却无法选举主节点的情况。为避免出现这种情况,可考虑先添加 priority :0 和 votes :0 的新从节点。然后运行 rs.status(),确保成员已过渡到 SECONDARY 状态。最后,使用 rs.reconfig() 更新其优先级和投票。

向一个已经使用副本集中添加一个 Secondary 节点

1 添加一个无投票权,优先级为0的成员

bash 复制代码
rs.add( { host: "mongodbd4.example.net:27017", priority: 0, votes: 0 } )

2 查看副本集状态,确认新成员已经变为 SECONDARY 状态

bash 复制代码
rs.status()

3 重新配置副本集,使新成员可以投票,并且优先级

bash 复制代码
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 版本的验证规则可能不同。

向副本集中添加一个优先级为0 的成员

bash 复制代码
rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } )

添加仲裁节点

文档格式

bash 复制代码
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } )

字符串格式

bash 复制代码
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } )
相关推荐
TDengine (老段)22 分钟前
TDengine 转换函数 TO_JSON 用户手册
android·大数据·数据库·json·时序数据库·tdengine·涛思数据
2301_8002561130 分钟前
第七章 空间存储与索引 知识点梳理3(空间填充曲线)
数据库·笔记·sql·postgresql
冰封剑心34 分钟前
MiniCPM-V-2_6 (4-bit 量化)使用
java·前端·数据库
小满、1 小时前
MySQL :存储引擎原理、索引结构与执行计划
数据库·mysql·索引·mysql 存储引擎
x***13391 小时前
SQL Server 创建用户并授权
数据库·oracle
JIngJaneIL1 小时前
智慧物业|物业管理|基于SprinBoot+vue的智慧物业管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·论文·智慧物业管理系统
枫叶梨花2 小时前
一次 Kettle 中文乱码写入失败的完整排查实录
数据库·后端
笃行客从不躺平2 小时前
遇到大SQL怎么处理
java·开发语言·数据库·sql
逻极3 小时前
Redis Queue (RQ) 核心原理:轻量任务队列的设计与实践(一句话讲透核心本质)
数据库·redis·bootstrap
q***31833 小时前
Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)
数据库·redis·缓存