参考 > 参考 > mongo Shell方法 > 复制方法 > rs.add()
rs.
add
(host,arbiterOnly )¶将成员添加到副本集。若要运行该方法,必须连接到副本集的主数据库。
参数 | 类型 | 描述 |
---|---|---|
host |
字符串或文件 | 要添加到副本集的新成员。指定为字符串或配置文档: |
arbiterOnly |
布尔值 | 可选的。仅在<host> 值是字符串时适用。如果为true ,则添加的主机为仲裁器。 |
rs.add()
提供了一些数据库命令和相应的shell帮助
器的包装。有关所有副本集配置选项的完整文档,请参阅
副本集配置文档。replSetReconfig
mongo
rs.reconfig()
从MongoDB 3.6,MongoDB二进制文件mongod
和开始
mongos
,默认情况下绑定到localhost。如果
为二进制net.ipv6
文件设置了
配置文件设置或--ipv6
命令行选项,则二进制文件还会绑定到本地IPv6地址。
以前,从MongoDB 2.6开始,默认情况下,只有正式的MongoDB RPM(Red Hat,CentOS,Fedora Linux和衍生产品)和DEB(Debian,Ubuntu和衍生产品)的二进制文件才绑定到localhost。
当仅绑定到本地主机时,这些MongoDB 3.6二进制文件只能接受来自mongo
在同一台计算机上运行的客户端(包括Shell,副本集中部署的其他成员和分片群集)中的连接。远程客户端无法连接到仅绑定到本地主机的二进制文件。
要覆盖并绑定到其他IP地址,可以使用
net.bindIp
配置文件设置或
--bind_ip
命令行选项来指定主机名或IP地址的列表。
例如,以下mongod
实例绑定到localhost和My-Example-Associated-Hostname
与ip地址关联的主机名198.51.100.1
:
为了连接到该实例,远程客户端必须指定主机名或其关联的IP地址198.51.100.1
:
小费
如果可能,请使用逻辑DNS主机名而不是IP地址,尤其是在配置副本集成员或分片群集成员时。逻辑DNS主机名的使用避免了由于IP地址更改而导致的配置更改。
rs.add()
在某些情况下,可以触发主节点的选举,这将断开Shell的连接(例如,添加优先级高于当前主节点的新成员)。在这种情况下,mongo
即使操作成功,外壳程序也会显示错误。
小费
当新添加的辅助服务器的votes
且
其priority
设置大于零时,在其初始同步期间,即使该辅助服务器由于其数据不一致而无法提供读取服务或成为主服务器,但仍将作为投票成员。
这可能导致多数投票成员在线但无法选举主要成员的情况。为避免这种情况,请考虑首先使用和添加新的辅助服务器
。然后,一旦成员转换为
状态,即可使用来更新其优先级和投票。priority :0
votes :0
SECONDARY
rs.reconfig()
小费
当新添加的辅助服务器的votes
且
其priority
设置大于零时,在其初始同步期间,即使该辅助服务器由于其数据不一致而无法提供读取服务或成为主服务器,但仍将作为投票成员。
这可能导致多数投票成员在线但无法选举主要成员的情况。为避免这种情况,请考虑首先使用和添加新的辅助服务器
。然后,一旦成员转换为
状态,即可使用来更新其优先级和投票。priority :0
votes :0
SECONDARY
rs.reconfig()
要将具有默认投票和优先级设置的新辅助成员添加到现有副本集,请执行以下操作:
确保新成员已达到SECONDARY
状态。要检查副本集成员的状态,请运行
rs.status()
:
重新配置副本集以更新新成员的投票和优先级:
n
数组中新成员的数组索引
在哪里members
。
警告
rs.reconfig()
壳方法可以强制当前主下台,这将导致一个选举。当主服务器降级时,将
mongod
关闭所有客户端连接。虽然这通常需要10到20秒,但请尝试在计划的维护期间进行这些更改。以下操作添加了一个mongod
实例,该实例在主机mongodb4.example.net
上运行并且可以在默认端口上访问
27017
,作为优先级为0的
辅助成员:
您必须members[n].host
在成员配置文档中指定该字段。
有关members
可用的副本集成员配置设置,请参见。