ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs 菜单

副本集主节点

主节点是副本集中唯一接受写入操作的成员。MongoDB 在主节点上应用写入操作,然后在主节点的 oplog 上记录这些操作。从节点成员复制该日志,并将操作应用于其数据集。

在以下三节点副本集中,主节点接受所有写入操作。然后,从节点复制 oplog 以应用于其数据集。

Diagram of default routing of reads and writes to the primary.
点击放大

副本集的所有节点都可以接受读取操作。但是,默认情况下,应用程序将其读取操作定向到主节点。有关更改默认读取行为的详细信息,请参阅读取偏好(Read Preference)

副本集最多只能有一个主节点。[1] 如果当前的主节点不可用,则将通过选举决定新的主节点。有关更多详细信息,请参阅副本集选举

在以下 3 节点组成的副本集中,主节点变得不可用。此情况会触发选举,而该选举会在剩余的从节点中选取一个作为新的主节点。

Diagram of an election of a new primary. In a three member replica set with two secondaries, the primary becomes unreachable. The loss of a primary triggers an election where one of the secondaries becomes the new primary
点击放大
[1]某些情况下,副本集中的两个节点可能会暂时认为它们是主节点,但最多只能有其中一个节点能够完成具有{ w: "majority" }写入关注的写入操作。可以完成{ w: "majority" }写入操作的节点是当前主节点,另一个节点是尚未识别其降级(通常是由于网络分区)的前主节点。发生这种情况时,尽管已请求读取偏好primary,但连接到前主节点的客户端可能会观察到过时数据,并且对前主节点的新写入操作最终将回滚。