自管理链式复制
从版本 2.0 开始,MongoDB支持链式复制。 当从节点成员从另一个从从节点(secondary node from replica set)成员而不是从从节点(secondary node from replica set)主节点 (primary node in the replica set)复制时,就会发生链式复制。示例,如果从节点根据网络从节点(secondary node from replica set)时间选择其复制源,并且最近的成员是另一个从网络探测(ping),则可能会出现这种从节点(secondary node from replica set)。 该操作的复制源是从中读取数据的成员。
链式复制可以减少主节点上的负载。但是,链式复制也可能会导致复制延迟增加,具体取决于网络拓扑。
对于链式复制导致延迟的情况,您可以使用settings.chainingAllowed
自管理副本集配置 中的 设置禁用链式复制。
MongoDB 默认能够进行链式复制。此过程描述了如何禁用以及重新启用。
注意
If you disable chained replication, the replSetSyncFrom
command
and rs.syncFrom()
method have no effect.
禁用链式复制
要禁用链式复制,设立settings.chainingAllowed
自管理副本集配置 中的 字段设置为false
。
您可以使用以下命令序列,将 settings.chainingAllowed
设置为 false
:
将配置设置复制到
cfg
对象中:cfg = rs.config() 注意当前配置设置是否包含
settings
嵌入式文档。如是这样,请跳过此步骤。警告
为避免数据丢失,如果配置设置包含
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)