首页 > 解决方案 > 如果主节点仍然处于活动状态,副本集中的辅助节点可以从另一个辅助节点复制数据吗?

问题描述

我正在为 MongoDB 开发人员认证做准备,一个练习题让我很难过:

以下哪项关于 MongoDB 中的复制机制是正确的?检查所有适用。

一个。主节点上的操作记录在称为 oplog 的上限集合中。

湾。默认情况下,副本集的成员可以从该集的任何其他数据承载成员复制数据。

C。默认情况下,客户端从副本集中最近的成员读取。

我选择了 just a.,但b.也被认为是真的。

我的理解是,副本集中的辅助节点只会轮询主节点的 oplog,并且只有在主节点出现故障并且另一个辅助节点成为新的主节点时才会切换到另一个辅助节点。

b. 默认情况下,该集合的任何其他数据承载成员中的措辞意味着即使主节点仍处于活动状态,辅助节点也可以相互轮询。我认为情况并非如此。我的理解正确吗?

标签: mongodbreplicaset

解决方案


湾。默认情况下,副本集的成员可以从该集的任何其他数据承载成员复制数据。

这意味着副本集中的某些成员有资格从另一个承载数据的成员复制数据。这另一个数据承载成员将是主要成员。请注意,数据仅写入主节点(复制到其他符合条件的成员)。

某些节点可能没有资格复制数据 - 例如,仲裁器(仲裁器没有数据集的副本,不能成为主节点,它参与选举投票)。

默认情况下,表示此复制操作是自动的。

注意文档:

  • 辅助节点维护主节点数据集的副本。为了复制数据,辅助节点在异步过程中将主节点 oplog 中的操作应用于其自己的数据集。
  • 如果当前主节点不可用,则辅助节点可以成为主节点;次要举行选举并选举新的主要。
  • 客户端可以从辅助成员读取数据(这可以在读取首选项中指定)。

推荐阅读