参考 > 参考 > mongo Shell方法 > 复制方法 > rs.reconfig()
rs.
reconfig
(配置,强制)¶重新配置现有副本集,覆盖现有副本集配置。若要运行该方法,必须连接到副本集的主数据库。
参数 | 类型 | 描述 |
---|---|---|
configuration |
文献 | 甲文档,用于指定一个副本集的配置。 |
force |
文献 | 可选的。如果设置为,这将强制副本集接受新配置,即使大多数成员不可访问。请谨慎使用,因为这可能会导致
回滚情况。{ force: true } |
要重新配置现有副本集,请首先使用检索当前配置rs.conf()
,根据需要修改配置文档,然后将修改后的文档传递给rs.reconfig()
。
rs.reconfig()
提供围绕replSetReconfig
命令的包装
。
该force
参数允许向非主节点发出重新配置命令。
要在实施访问控制的部署上运行该方法,用户必须replSetConfigure
对集群资源具有
特权操作。数据库中clusterManager
可用的内置角色admin
为该命令提供了必需的特权。
rs.reconfig()
获得特殊的互斥锁,以防止rs.reconfig()
同时发生多个
操作。
警告
避免重新配置包含不同MongoDB版本成员的副本集,因为验证规则可能在MongoDB版本之间有所不同。
所述rs.reconfig()
壳方法可以触发当前主在某些情况下下台。初级降级触发选择新的初级的
选举:
假设为default,则集群选择新的主节点之前的中值时间通常不应超过12秒。这包括将主要节点标记为不可用并致电并完成选举所需的时间。您可以通过修改复制配置选项来调整此时间段
。网络延迟之类的因素可能会延长完成副本集选举所需的时间,进而影响您的群集在没有主数据库的情况下可以运行的时间。这些因素取决于您的特定群集体系结构。replica
configuration settings
settings.electionTimeoutMillis
在选择过程中,群集在选择新的主数据库之前不能接受写操作。
您的应用程序连接逻辑应包括对自动故障转移和后续选举的容忍度。从MongoDB 3.6开始,MongoDB驱动程序可以检测到主数据库的丢失,并可以一次自动 重试某些写入操作,从而提供了自动故障转移和选择的其他内置处理:
retryWrites=true
在连接字符串中包含来显式启用可重试的写入。为了进一步减少对生产集群的潜在影响,请仅在计划的维护期间重新配置。
{ force: true }
¶警告
rs.reconfig()
与with一起使用可能会导致
大多数提交的写入回退。使用此选项时请多加注意。{ force: true }
使用rs.reconfig()
删除副本集成员不会自动断开从其他副本集成员到删除成员的打开的传出连接。
默认情况下,副本集成员等待5分钟,然后再断开与已删除成员的连接。在分片副本集中,您可以使用ShardingTaskExecutorPoolHostTimeoutMS
server参数修改此超时
。
4.2版中的新增功能:若要立即将所有传出连接从副本集中删除到删除的成员,请dropConnections
对副本集上每个剩余的成员运行管理命令:
替换为<hostname>
并<port>
用卸下的成员的替换。
名为的副本集rs0
具有以下配置:
以下操作序列更新
members[n].priority
第二个成员的。这些操作是通过mongo
连接到主数据库的外壳程序发出的。
第二条语句members[n].priority
为members
数组中的第二个文档设置一个
值。有关其他设置,请参阅副本集配置设置。
要访问数组中的成员配置文档,该语句使用数组索引而不是副本集成员的
members[n]._id
字段。
最后一条语句调用rs.reconfig()
修改后的方法cfg
以初始化此新配置。成功重新配置后,副本集的配置将类似于以下内容: