翻译或纠错本页面
管理链式复制¶
自2.0版本之后,MongoDB开始支持链式复制。当 secondary 从其他从节点上进行复制而不是 primary 的时候,就发生了链式复制。当从节点根据节点之间的ping值来进行选取的时候,最近的从节点可能会被选中,从而产生链式复制。
链式复制可以减低主节点的load。但是链式复制也可能造成复制的滞后,这取决于网络情况。
2.2.2 新版功能.
我们可以使用 Replica Set Configuration 中的 chainingAllowed 设置来禁止链式复制,避免复制滞后。
MongoDB默认是允许链式复制的。本教程讲述了如何禁止和重新开启链式复制。
注解
如果禁止了链式复制,我们也可以通过使用 replSetSyncFrom 来指定某个从节点由另一个从节点上进行复制。但是该配置仅会在从节点重新计算由哪复制后生效。
禁止链式复制¶
我们可以将 Replica Set Configuration 中的 chainingAllowed 设置为 false 来禁止链式复制。
我们可以使用下列的命令来将 chainingAllowed 设置为 false 。
将配置信息赋值给 cfg :
cfg = rs.config()
记下现在的配置是否包含 settings,如有包含就跳过此步。
警告
为了避免数据丢失,跳过此步如果配置中已经包含 settings 子文档。
如果配置中 不包含 settings 子文档,建立子文档使用下列命令:
cfg.settings = { }
使用如下的操作将 chainingAllowed 设置为 false :
cfg.settings.chainingAllowed = false rs.reconfig(cfg)
重新开启链式复制¶
我们可以将 chainingAllowed 设置为 true 来重新应用链式复制。我们可以使用如下命令:
cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)