Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

rs.add()

在此页面上

  • 定义
  • 兼容性
  • IP 绑定
  • 行为
  • 例子
rs.add(host, arbiterOnly)

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

Parameter
类型
说明

host

字符串或文档

将新节点添加到副本集中。指定为字符串或配置文档:

  • 如果是文档,请指定可在 members 数组中找到的副本集节点配置文档。您必须在节点配置文件中指定 host 字段。

    {
    _id: <int>,
    host: <string>, // required
    arbiterOnly: <boolean>,
    buildIndexes: <boolean>,
    hidden: <boolean>,
    priority: <number>,
    tags: <document>,
    secondaryDelaySecs: <int>,
    votes: <number>
    }

    有关该配置字段的说明,请参阅 members

  • 如果是字符串,请指定新节点的主机名和可选端口号。

arbiterOnly

布尔

可选。仅在 <host> 值为字符串时才适用。如果为 true,则添加的主机是仲裁节点。

rs.add()封装了replSetReconfig数据库命令和相应的mongosh辅助程序rs.reconfig()的部分功能。 有关所有副本集配置选项的完整文档,请参阅自管理副本集配置文档。

此方法可用于以下环境中托管的部署:

警告

将实例绑定到可公开访问的 IP 地址之前,必须保护集群免遭未经授权的访问。有关安全建议的完整列表,请参阅自管理部署的安全清单。至少应考虑启用身份验证强化网络基础设施。

MongoDB 二进制文件 mongodmongos 默认绑定到本地主机。如果为此二进制文件设置了 net.ipv6 配置文件设置或 --ipv6 命令行选项,则该二进制文件还会绑定到本地主机 IPv6 地址。

默认情况下,绑定到本地主机的 mongodmongos 只接受来自同一计算机上运行的客户端的连接。这种绑定行为包括 mongosh 和副本集或分片集群的其他节点。远程客户端无法连接到仅绑定到本地主机的二进制文件。

要覆盖默认绑定并绑定到其他 IP 地址,请使用 net.bindIp 配置文件设置或 --bind_ip 命令行选项来指定主机名或 IP 地址的列表。

例如,以下 mongod 实例会绑定到本地主机和主机名 My-Example-Associated-Hostname,而该主机名与 IP 地址 198.51.100.1 相关联:

mongod --bind_ip localhost,My-Example-Associated-Hostname

为了连接到此实例,远程客户端必须指定主机名或其关联的 IP 地址 198.51.100.1

mongosh --host My-Example-Associated-Hostname
mongosh --host 198.51.100.1

重要

要避免因 IP 地址变更而更新配置,请使用 DNS 主机名而非 IP 地址。在配置副本集成员或分片集群成员时,使用 DNS 主机名而非 IP 地址尤为重要。

在水平分割网络配置下,请使用主机名而非 IP 地址来配置集群。从 MongoDB 5.0 开始,仅配置了 IP 地址的节点将无法通过启动验证,因而不会启动。

在某些情况下,rs.add() 可能会触发主节点选举,这会断开 shell 连接(例如添加优先级高于当前主节点的新节点)。在这种情况下,即使操作成功,mongosh 也可能显示错误。

警告

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

要将具有默认投票和优先级设置的新次要成员添加到新的副本集,可使用以下对象调用 rs.add() 方法:

  • 成员配置文件

    rs.add( { host: "mongodbd4.example.net:27017" } )
  • 主机名

    rs.add( "mongodbd4.example.net:27017" )

将具有默认投票和优先级设置的新从节点添加到现有副本集:

rs.add( { host: "mongodbd4.example.net:27017" } )

警告

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

以下操作添加 mongod 实例,作为优先级为 0 的从节点,该实例在主机 mongodb4.example.net 上运行且可通过默认端口 27017 访问:

rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } )

您必须在该节点配置文档中指定 members[n].host 字段。

请参阅 members,了解可用的副本集节点配置设置。

以下操作添加一个mongod实例,该实例在主机mongodb3.example.net上运行,并可作为仲裁节点通过默认端口27017进行访问:

  • 成员配置文件

    rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } )
  • 主机名

    rs.add("mongodb3.example.net:27017", true)

另请参阅:

后退

复制