主节点是副本集中接收写操作的唯一成员。MongoDB在主数据库上应用写操作,然后在主数据库的oplog上记录操作。次要成员复制此日志,并将操作应用于其数据集。
在下面的三成员副本集中,主数据库接受所有写操作。然后,辅助服务器复制操作日志以应用于其数据集。
副本集的所有成员都可以接受读取操作。但是,默认情况下,应用程序将其读取操作定向到主要成员。有关更改默认读取行为的详细信息,请参见读取首选项。
副本集最多可以有一个主副本。 [1]如果当前的主要数据库不可用,则选举确定新的主要数据库。有关更多详细信息,请参见 副本集选择。
在以下3成员副本集中,主数据库不可用。这将触发一次选举,该选举将选择其余的中学之一作为新的小学。
[1] | 在某些情况下,副本集中的两个节点可能会短暂地认为它们是主要节点,但至多,其中一个节点将能够完成写操作而无需担心。可以完成
写入操作的节点是当前主节点,另一个节点是以前的主节点,由于网络分区,该主节点尚未意识到其降级。发生这种情况时,尽管已请求读取首选项,但连接到前主数据库的客户端可能仍会观察到过时的数据
,并且对前主数据库的新写入最终将回滚。{ w:
"majority" } { w: "majority" } primary |