Management 链式复制

在本页面

从 2.0 版开始,MongoDB 支持链式复制。当secondary成员从另一个辅助成员而不是从primary复制时,就会发生链式复制。例如,如果辅助节点根据 ping 时间选择其复制目标,并且最接近的成员是另一个辅助节点,则可能是这种情况。

链式复制可以减少主数据库上的负载。但是,取决于网络的拓扑结构,链接复制还可能导致复制滞后时间延长。

您可以使用副本集配置中的settings.chainingAllowed设置来禁用链式复制,以防止链式复制导致延迟。

MongoDB 默认情况下启用链式复制。此过程介绍如何禁用它以及如何重新启用它。

Note

如果禁用了链式复制,您仍然可以使用replSetSyncFrom来指定一个辅助副本从另一个辅助副本进行复制。但是该配置将仅持续到辅助服务器重新计算要从中同步的成员之前。

禁用链式复制

要禁用链式复制,请将副本集配置中的settings.chainingAllowed字段设置为false

您可以使用以下命令序列将settings.chainingAllowed设置为false

cfg = rs.config()

Warning

为避免数据丢失,如果配置设置包含settings嵌入式文档,请跳过此步骤。

如果当前配置设置 包含settings嵌入式文档,请通过发出以下命令来创建嵌入式文档:

cfg.settings = { }
cfg.settings.chainingAllowed = false
rs.reconfig(cfg)

重新启用链式复制

要重新启用链式复制,请将settings.chainingAllowed设置为true。您可以使用以下命令序列:

cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)
首页