管理链式复制
从 2.0 版本开始,MongoDB 支持链式复制。当一个从节点从另一个从节点而不是从主节点复制时,就会发生链式复制。这可能是这种情况,例如,如果从节点根据 ping 时间选择其复制目标并且最近的节点是另一个从节点。
链式复制可以减少主节点的负载。但链式复制也可能导致复制滞后增加,具体取决于网络拓扑。
您可以使用副本集配置settings.chainingAllowed
中的 设置在链式复制导致延迟的情况下禁用链式复制。
MongoDB 默认启用链式复制。此过程描述了如何禁用它以及如何重新启用它。
NOTE
如果链式复制被禁用,您仍然可以使用
replSetSyncFrom
来指定一个从节点从另一个从节点复制。但是该配置只会持续到次要重新计算要从哪个节点同步。
禁用链式复制
要禁用链式复制,请将 Replica Set Configurationsettings.chainingAllowed
中的 字段设置为。false
您可以使用以下命令序列设置 settings.chainingAllowed
为 false
:
将配置设置复制到
cfg
对象中:cfg = rs.config()
- 注意当前配置设置是否包含
settings
嵌入文档。如果他们这样做,请跳过此步骤。
WARNING
为避免数据丢失,如果配置设置包含
settings
嵌入文档,请跳过此步骤。
如果当前配置设置不包含 settings
嵌入文档,请通过发出以下命令创建嵌入文档:
cfg.settings = { }
发出以下命令序列以设置
settings.chainingAllowed
为false
:cfg.settings.chainingAllowed = false rs.reconfig(cfg)
重新启用链式复制
要重新启用链式复制,请设置 settings.chainingAllowed
为true
. 您可以使用以下命令序列:
cfg = rs.config()
cfg.settings.chainingAllowed = true
rs.reconfig(cfg)
← 使用不可用节点重新配置副本集。 更改副本集中的主机名 →
原文链接 - https://docs.mongodb.com/manual/tutorial/manage-chained-replication/
译者:陆文龙