副本集主节点
主节点是副本集中唯一接收写操作的成员。MongoDB 首先在主节点上应用写操作,然后记录主节点的 主节点 的 oplog。 辅助节点 成员复制此日志并将其应用于其数据集。点击放大
在以下三个成员的副本集中,主节点接收所有写操作。然后辅助节点复制 oplog 以应用于其数据集。
点击放大
副本集的所有成员都可以接收读操作。然而,默认情况下,应用程序将它的读操作指向主节点。有关更改默认读行为的信息,请参阅 读首选项。
副本集最多只能有一个主节点。 [1] 如果当前主节点不可用,则选举确定新的主节点。有关更多详细信息,请参阅 副本集选举。
在以下三个成员的副本集中,主节点变得不可用。这触发了选举,选择其中一个剩余的辅助节点作为新的主节点。
点击放大
[1] | 在某些情况下,副本集中的两个节点可能会 暂时 认为自己是主节点,但最多只能有一个节点能够使用 { w: "majority" } 写关注完成写操作。能够完成 { w: "majority" } 写操作的节点是当前主节点,而另一个节点是尚未承认其降级的先前主节点,通常是由于 网络分区。在这种情况下,连接到先前主节点的客户端可能会观察到陈旧数据,尽管它们请求了 primary 读首选项,并且最终主节点的新写操作将回滚。 |