【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 节点,

文档格式

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() 更新其优先级和投票。

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

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

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

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 } )

 

相关推荐

  1. 【MongoDB】rs.add 成员添加副本

    2024-06-08 06:50:03       32 阅读
  2. IP添加基础设计

    2024-06-08 06:50:03       34 阅读
  3. 元胞添加元胞数组

    2024-06-08 06:50:03       49 阅读
  4. SSH密钥添加GitHub账户

    2024-06-08 06:50:03       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-08 06:50:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-08 06:50:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-08 06:50:03       87 阅读
  4. Python语言-面向对象

    2024-06-08 06:50:03       96 阅读

热门阅读

  1. CMakeFile根据不同指令集配置加载obj对象

    2024-06-08 06:50:03       24 阅读
  2. Element-UI快速入门

    2024-06-08 06:50:03       32 阅读
  3. C++中的字符串详解

    2024-06-08 06:50:03       29 阅读
  4. Linux入门学习指南

    2024-06-08 06:50:03       27 阅读
  5. 设计模式之模板方法模式

    2024-06-08 06:50:03       29 阅读
  6. Linux基于V4L2的视频捕捉

    2024-06-08 06:50:03       33 阅读
  7. Unity3D DOTS 10W GPU Intancing 动画与合批优化详解

    2024-06-08 06:50:03       28 阅读
  8. Excel中的SUMPRODUCT函数:使用方法与案例分析

    2024-06-08 06:50:03       30 阅读
  9. 【MyBatisPlus条件构造器】

    2024-06-08 06:50:03       29 阅读
  10. [DT] 翻译笔记

    2024-06-08 06:50:03       24 阅读
  11. uniapp vue 隐藏button的边框

    2024-06-08 06:50:03       32 阅读
  12. 零、测试开发前置知识

    2024-06-08 06:50:03       28 阅读
  13. 【常用工具系列】Git 教程——从入门到大师

    2024-06-08 06:50:03       45 阅读