Docs 菜单
Docs 主页
/
MongoDB Manual
/ /

管理链式复制

在此页面上

  • 禁用链式复制
  • 重新启用链式复制

从 2.0 版本开始,MongoDB 支持链式复制。当从节点从另一个从节点复制而不是从主节点复制时,就会发生链式复制。例如,如果从节点根据网络探测时间选择其复制目标,并且最近的成员是另一个从节点,则可能会出现这种情况。

链式复制可以减少主节点上的负载。但是,链式复制也可能会导致复制延迟增加,具体取决于网络拓扑。

在链式复制导致延迟的情况下,您可以使用settings.chainingAllowed副本集配置中的设置禁用链式复制。

MongoDB 默认能够进行链式复制。此过程描述了如何禁用以及重新启用。

注意

如果已禁用链式复制,仍可使用 replSetSyncFrom 指定从另一个从节点复制从节点。但该配置只会持续到从节点重新计算要同步的成员为止。

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

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

  1. 将配置设置复制到 cfg 对象中:

    cfg = rs.config()
  2. 注意当前配置设置是否包含 settings 嵌入式文档。如是这样,请跳过此步骤。

    警告

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

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

    cfg.settings = { }
  3. 发出以下命令序列,以将 settings.chainingAllowed 设置为 false

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

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

cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)
← 重新配置具有不可用成员的副本集