OPTIONS
翻译或纠错本页面

管理链式复制

自2.0版本之后,MongoDB开始支持链式复制。当 secondary 从其他从节点上进行复制而不是 primary 的时候,就发生了链式复制。当从节点根据节点之间的ping值来进行选取的时候,最近的从节点可能会被选中,从而产生链式复制。

链式复制可以减低主节点的load。但是链式复制也可能造成复制的滞后,这取决于网络情况。

2.2.2 新版功能.

我们可以使用 Replica Set Configuration 中的 chainingAllowed 设置来禁止链式复制,避免复制滞后。

MongoDB默认是允许链式复制的。本教程讲述了如何禁止和重新开启链式复制。

注解

如果禁止了链式复制,我们也可以通过使用 replSetSyncFrom 来指定某个从节点由另一个从节点上进行复制。但是该配置仅会在从节点重新计算由哪复制后生效。

禁止链式复制

我们可以将 Replica Set Configuration 中的 chainingAllowed 设置为 false 来禁止链式复制。

我们可以使用下列的命令来将 chainingAllowed 设置为 false

  1. 将配置信息赋值给 cfg

    cfg = rs.config()
    
  2. 记下现在的配置是否包含 settings,如有包含就跳过此步。

    警告

    为了避免数据丢失,跳过此步如果配置中已经包含 settings 子文档。

    如果配置中 不包含 settings 子文档,建立子文档使用下列命令:

    cfg.settings = { }
    
  3. 使用如下的操作将 chainingAllowed 设置为 false

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

重新开启链式复制

我们可以将 chainingAllowed 设置为 true 来重新应用链式复制。我们可以使用如下命令:

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