Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

自管理链式复制

在此页面上

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

从版本 2.0 开始,MongoDB支持链式复制。 当 从主节点 (primary node in the replica set)从节点(secondary node from replica set)从节点(secondary node from replica set)时,就会发生链式复制。示例,如果从节点根据网络从节点(secondary node from replica set)时间选择其复制源,并且最近的成员是另一个从网络探测(ping),则可能会出现这种从节点(secondary node from replica set)。 该操作的复制源是从中读取数据的成员。

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

对于链式复制导致延迟的情况,您可以使用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)

后退

配置不可用成员