副本集的每个成员都有一个状态。
| 数 | 名称 | 状态说明 |
|---|---|---|
| 0 | STARTUP |
尚未成为任何集合的活跃成员。所有成员都以这种状态启动。在mongod解析副本集的配置文件,而在
STARTUP。 |
| 1个 | PRIMARY |
处于主要状态的成员 是唯一可以接受写操作的成员。有资格投票。 |
| 2 | SECONDARY |
处于次要状态的成员 正在复制数据存储。有资格投票。 |
| 3 | RECOVERING |
成员要么执行启动自检,要么从完成回滚或重新 同步过渡。有资格投票。 |
| 5 | STARTUP2 |
该成员已加入集合,并正在运行初始同步。有资格投票。 |
| 6 | UNKNOWN |
从集合的另一个成员看,该成员的状态尚不清楚。 |
| 7 | ARBITER |
仲裁人不复制数据,仅存在于选举中。有资格投票。 |
| 8 | DOWN |
从集合的另一个成员看,该成员是不可访问的。 |
| 9 | ROLLBACK |
该成员正在积极执行回滚。有资格投票。无法从该成员读取数据。 从4.2版开始,当成员进入 |
| 10 | REMOVED |
该成员曾经在副本集中,但随后被删除。 |
ARBITER¶处于ARBITER状态的成员不复制数据或接受写操作。他们有资格投票,仅在选举中打破平局。如果副本集ARBITER的表决成员数将是偶数,并且副本集可能受困,则该副本集应仅在该状态中具有成员。任何副本集中最多只能配置一个仲裁器。有关使用仲裁器的注意事项,请参阅doc:/ core / replica-set-arbiter。
有关核心状态的更多信息,请参见副本集成员。
STARTUP¶副本集的每个成员都以STARTUP
状态启动。mongod然后加载该成员的副本集配置,并将该成员的状态转换为STARTUP2。中的成员STARTUP尚未获得任何投票集的公认成员资格,
因此没有资格投票。
STARTUP2¶副本集的每个成员在加载完该成员的配置后STARTUP2立即进入状态mongod,这时它将成为副本集的活动成员并可以投票。然后,成员决定是否进行初始同步。如果成员开始初始同步,则该成员将一直保留STARTUP2到复制所有数据并构建所有索引为止。之后,成员转换为
RECOVERING。
RECOVERING¶副本集的成员RECOVERING尚未准备好接受读取时便进入状态。该RECOVERING状态可以在正常操作期间发生,并不一定反映错误情况。RECOVERING州议员有资格在选举中投票,但没有资格进入
PRIMARY州。
在复制足够的数据以确保客户端读取的数据具有一致的视图之后,成员从过渡RECOVERING到SECONDARY。RECOVERING
和SECONDARY状态之间的唯一区别是,RECOVERING
禁止客户端读取并SECONDARY允许读取。
SECONDARY状态不保证有关主数据的过时性。
由于过载,辅助副本可能远远落在副本集的其他成员之后,因此它可能需要与副本集中的其余成员重新同步。发生这种情况时,成员进入
RECOVERING状态并需要手动干预。
处于任何错误状态的成员都无法投票。
| [1] | 在某些情况下,副本集中的两个节点可能会短暂地认为它们是主要节点,但至多,其中一个节点将能够完成写操作而无需担心。可以完成
写入操作的节点是当前主节点,另一个节点是以前的主节点,由于网络分区,该主节点尚未意识到其降级。发生这种情况时,尽管已请求读取首选项,但连接到前主数据库的客户端可能仍会观察到过时的数据
,并且对前主数据库的新写入最终将回滚。{ w:
"majority" }{ w: "majority" }primary |