Docs 菜单

Docs 主页开发应用程序MongoDB Manual

副本集主节点

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

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

读取和写入主节点的默认路由示意图。
点击放大

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

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

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

新主节点选举示意图。在具有两个从节点的三节点副本集中,主节点会变得无法访问。主节点丢失会触发选举,其中一个从节点会成为新的主节点
点击放大
[1]某些情况下,副本集中的两个节点可能会暂时认为自己是主节点,但最多只能有其中一个节点能够完成具有 { w: "majority" } 写关注的写入操作。可以完成 { w: "majority" } 写入操作的节点是当前主节点,另一个节点是尚未识别其降级(通常是由于网络分区)的前主节点。发生这种情况时,尽管请求了读取偏好 primary,但连接到前主节点的客户端可能会观察到过时数据,并且对前主节点的新写入操作最终将回滚。
← 副本集节点