You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB认证备考疑问:主节点活跃时从节点能否同步其他从节点?

关于MongoDB副本集复制机制的疑问解答

你的理解确实存在偏差,MongoDB副本集的从节点默认完全可以在主节点活跃的情况下,从其他承载数据的从节点同步数据,所以选项b是正确的。下面详细拆解每个选项和你的疑问:

选项a:正确

主节点上的所有写操作都会被记录在local.oplog.rs这个固定大小的集合中,副本集的其他成员正是通过拉取这个oplog来同步数据,所以这个描述完全正确。

选项b:正确(你的误解点在这里)

MongoDB副本集的从节点默认会自动选择最优的同步源,这个源并不局限于主节点——它可以是任何其他拥有完整数据、能提供oplog同步的副本集成员(包括其他从节点)。

这种设计的好处很实际:

  • 减轻主节点的负载:如果有多个从节点,让它们互相同步可以避免主节点同时处理所有从节点的oplog拉取请求。
  • 优化网络延迟:比如跨区域部署的副本集,偏远地区的从节点可以选择同区域的从节点作为同步源,而不是跨地域连主节点,提升同步效率。

你可以通过rs.printSlaveReplicationInfo()命令查看某个从节点当前的同步源,会发现它完全可能是另一个从节点,哪怕主节点还在正常运行。当然你也可以用rs.syncFrom("目标节点地址")手动指定同步源,但默认是自动选择的,所以选项b的描述没问题。

选项c:错误

默认情况下,MongoDB客户端的读请求会直接发送到主节点,并不会自动选择最近的成员。只有当你显式设置了读偏好(比如nearest、secondaryPreferred等)时,才会根据规则选择其他成员读取。所以这个选项的描述是错误的。

总结一下,正确选项是a和b,你之前对从节点同步源的理解过于局限了,MongoDB的复制机制在默认情况下就支持从节点间的同步哦。

内容的提问来源于stack exchange,提问作者craigcaulfield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:27:41