replSetReconfig
在本页面
replSetReconfig
- replSetReconfig命令修改现有副本集的配置。您可以使用此命令添加和删除成员,以及更改在现有成员上设置的选项。使用以下语法:
{ replSetReconfig: <new_config_document>, force: false }
您也可以使用 Shell 的rs.reconfig()方法运行replSetReconfig。
Considerations
请注意以下replSetReconfig行为和注意事项:
Warning
避免重新配置包含不同 MongoDB 版本成员的副本集,因为验证规则在 MongoDB 版本之间可能有所不同。
-
您必须对副本集的当前主要成员的admin database发出此命令。
-
您可以选择指定
force: true
来强制副本集接受新配置。如果副本集中没有当前主副本,请使用此选项。
Warning
强制使用replSetReconfig命令可能会导致rollback情况。请谨慎使用。
使用 force 选项可以将副本集还原到具有不同主机名的新服务器。
-
集的大多数成员必须可操作,以使更改正确传播。
-
replSetReconfig在某些情况下可以触发当前的主节点降级。当主服务器降级时,它将强制关闭所有 Client 端连接。主降压触发election选择新的primary。
假设默认为副本配置设置,集群选择新的主要数据库之前的中值时间通常不应超过 12 秒。这包括将主要对象标记为unavailable并调用并完成election所需的时间。您可以通过修改settings.electionTimeoutMillis复制配置选项来调整此时间段。网络延迟之类的因素可能会延长完成副本集选举所需的时间,进而影响群集在没有主数据库的情况下可以运行的时间。这些因素取决于您的特定群集体系结构。
在选择过程中,群集在选择新的主数据库之前不能接受写操作。
您的应用程序连接逻辑应包括对自动故障转移和后续选举的容忍度。
3.6 版中的新功能:MongoDB 3.6 驱动程序可以一次检测到主数据库的丢失并自动重试某些写入操作,从而提供了对自动故障转移和选举的其他内置处理。
为了进一步减少对生产集群的潜在影响,请仅在计划的维护期间重新配置。
在版本 3.2 中更改。
-
非投票成员的priority必须为 0.
-
更改protocolVersion之前,请确保至少有一个 oplog 条目(从当前协议版本生成)已从主服务器复制到所有辅助服务器。有关详细信息,请参见修改副本集协议版本。
replSetReconfig获得特殊的互斥锁,以防止同时发生多个replSetReconfig操作。