On this page
副本集成员国
副本集的每个成员都有一个状态。
Number | Name | State Description |
---|---|---|
0 | STARTUP | 尚未成为任何集合的活跃成员。所有成员都以这种状态启动。 mongod在STARTUP时解析副本集配置文档。 |
1 | PRIMARY | 处于状态primary的成员是唯一可以接受写操作的成员。有资格投票。 |
2 | SECONDARY | 处于状态secondary的成员正在复制数据存储。有资格投票。 |
3 | RECOVERING | 成员要么执行启动自检,要么从完成rollback或resync过渡。有资格投票。 |
5 | STARTUP2 | 该成员已加入集合,并正在运行初始同步。有资格投票。 |
6 | UNKNOWN | 从集合的另一个成员看,该成员的状态尚不清楚。 |
7 | ARBITER | Arbiters不复制数据,仅存在于选举中。有资格投票。 |
8 | DOWN | 从集合的另一个成员看,该成员是不可访问的。 |
9 | ROLLBACK | 该成员正在积极执行rollback。有资格投票。无法从该成员读取数据。 |
10 | REMOVED | 该成员曾经在副本集中,但随后被删除。 |
States
Core States
PRIMARY
SECONDARY
ARBITER
有关核心状态的更多信息,请参见副本集成员。
Other States
STARTUP
STARTUP2
- mongod完成加载该成员的配置后,副本集中的每个数据承载成员都会进入STARTUP2状态,这时它将成为副本集中的活动成员并可以投票。然后,成员决定是否进行初始同步。如果成员开始初始同步,则该成员将保留在STARTUP2中,直到复制了所有数据并构建了所有索引。之后,成员转换为RECOVERING。
RECOVERING
- 当副本集的成员尚未准备好接受读取时,它将进入RECOVERING状态。 RECOVERING状态可以在正常操作期间发生,并不一定反映错误情况。 RECOVERINGState 的成员有资格在选举中投票,但没有资格进入PRIMARYState。
在复制足够的数据以保证 Client 端可以读取一致的数据后,成员从RECOVERING过渡到SECONDARY。 RECOVERING和SECONDARY状态之间的唯一区别是RECOVERING禁止 Client 端读取而SECONDARY允许它们读取。 SECONDARY状态不能保证有关主数据的陈旧性。
由于过载,secondary可能远远落在副本集的其他成员之后,因此可能需要与副本集的其余成员resync。发生这种情况时,成员进入RECOVERING状态并需要手动干预。
ROLLBACK
Error States
处于任何错误状态的成员均无法投票。
[1] | 在some circumstances中,副本集中的两个节点可能暂时认为它们是主要节点,但是最多,其中一个节点将能够完成{ w: "majority" }写入关注。可以完成{ w: "majority" }写操作的节点是当前主节点,另一个节点是以前的主节点,通常由于network partition而尚未识别其降级。发生这种情况时,尽管已请求读取首选项primary,但连接到先前主服务器的 Client 端仍可能会观察到过时的数据,并且对先前主服务器的新写入最终将回滚。 |