文档菜单
文档首页
/
MongoDB 手册
/ / /

自管理链式复制

本页内容

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

从版本 2.0 开始,MongoDB 支持链式复制。链式复制发生时,一个从节点从另一个从节点而不是从主节点复制。例如,如果从节点根据ping时间选择复制源,并且最近的成员是另一个从节点,则可能会发生这种情况。操作的数据源是从读取数据的成员。从节点成员从另一个从节点复制,而不是从主节点复制。这可能发生在以下情况下,例如,如果从节点根据ping时间选择复制源,并且最近的成员是另一个从节点。操作的数据源是从读取数据的成员。

链式复制可以减少主节点的负载。但是,根据网络拓扑,链式复制也可能导致复制延迟增加。

您可以使用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.chainingAllowedtrue。您可以使用以下命令序列

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

返回

配置不可用成员