链式复制

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

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

使用如下的操作将 chainingAllowed 设置为 false :

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

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

禁止链式复制

1、将配置信息赋值给 cfg 

#要在PRIMARY节点配置
cfg = rs.config()

2、记下当前配置设置是否包含 设置嵌入文档。如果他们这样做,请跳过此步骤。

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

cfg.settings = { }

3、修改并重载配置

#关闭链式复制
cfg.settings.chainingAllowed = false
#重载配置
rs.reconfig(cfg)
#查看配置
rs.config()

重新开启链式复制

和关闭方式类似,只不过将false替换成true

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

本文引用MongoDB中文官方文档