对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

rs.add()(mongosh方法)

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() provides a wrapper around some of the functionality of the replSetReconfig database command and the corresponding mongosh helper rs.reconfig(). See the Self-Managed Replica Set Configuration document for full documentation of all replica set configuration options.

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

警告

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

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

By default mongod and mongos that are bound to localhost only accept connections from clients that are running on the same computer. This binding behavior includes mongosh and other members of your replica set or sharded cluster. Remote clients cannot connect to binaries that are bound only to localhost.

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

警告

从 MongDB5.0 开始,仅配置了IP解决的水平分割DNS 节点无法通过初创企业验证并报告错误。请参阅disableSplitHorizonIPCheck

例如,以下 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() can, in some cases, trigger an election for primary which will disconnect the shell (such as adding a new member with a higher priority than the current primary). In such cases, mongosh may display an error even if the operation succeeds.

警告

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

To add a new secondary member with default vote and priority settings to a new replica set, you can call the rs.add() method with:

  • 成员配置文件

    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)

另请参阅:

给本页内容打分