Management 链式复制
在本页面
从 2.0 版开始,MongoDB 支持链式复制。当secondary成员从另一个辅助成员而不是从primary复制时,就会发生链式复制。例如,如果辅助节点根据 ping 时间选择其复制目标,并且最接近的成员是另一个辅助节点,则可能是这种情况。
链式复制可以减少主数据库上的负载。但是,取决于网络的拓扑结构,链接复制还可能导致复制滞后时间延长。
您可以使用副本集配置中的settings.chainingAllowed设置来禁用链式复制,以防止链式复制导致延迟。
MongoDB 默认情况下启用链式复制。此过程介绍如何禁用它以及如何重新启用它。
Note
如果禁用了链式复制,您仍然可以使用replSetSyncFrom来指定一个辅助副本从另一个辅助副本进行复制。但是该配置将仅持续到辅助服务器重新计算要从中同步的成员之前。
禁用链式复制
要禁用链式复制,请将副本集配置中的settings.chainingAllowed字段设置为false
。
您可以使用以下命令序列将settings.chainingAllowed设置为false
:
- 将配置设置复制到
cfg
对象中:
cfg = rs.config()
- 请注意当前配置设置是否包含
settings
嵌入式文档。如果是这样,请跳过此步骤。
Warning
为避免数据丢失,如果配置设置包含settings
嵌入式文档,请跳过此步骤。
如果当前配置设置 不 包含settings
嵌入式文档,请通过发出以下命令来创建嵌入式文档:
cfg.settings = { }
- 发出以下命令序列以将settings.chainingAllowed设置为
false
:
cfg.settings.chainingAllowed = false
rs.reconfig(cfg)
重新启用链式复制
要重新启用链式复制,请将settings.chainingAllowed设置为true
。您可以使用以下命令序列:
cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)