Docs 菜单

Docs 主页开发应用程序MongoDB Manual

副本集成员状态

副本集的每个成员都有一个状态。

数值
名称
状态描述
0
STARTUP
还不是任何集合的活动成员。所有成员均会以此状态启动。 mongodSTARTUP 中解析副本集配置文档
1
处于主节点状态的成员是唯一可以接受写入操作的成员。有资格投票。
2
处于从节点状态的成员正在复制数据存储。有资格投票。
3
成员要么执行启动自检,要么完成回滚重新同步后进行转换。数据无法用于来自此成员的读取。有资格投票。
5
该节点正在运行初始同步。有资格投票,但新添加到副本集的情况除外。
6
从集合中的另一个成员来看,该成员的状态尚不清楚。
7
仲裁节点不复制数据,其存在的唯一目的是参与选举。有资格投票。
8
从集合的另一个成员来看,该成员是无法访问的。
9

该成员正在主动执行回滚。有资格投票。数据无法用于来自此成员的读取。

从版本4开始。 2 ,当成员进入ROLLBACK状态时,MongoDB 会终止所有正在进行的用户操作。

10
此成员曾经在副本集中,但随后被删除。
PRIMARY

处于PRIMARY状态的成员接受写入操作。一个副本集一次最多有一个主节点。 [ 1 ] SECONDARY成员在选举后成为主节点。处于PRIMARY状态的成员有资格投票。

SECONDARY

处于SECONDARY状态的成员会复制主节点的数据集,并可配置为接受读取操作。从节点有资格在选举中投票,并且如果主节点不可用,则可能会被选为PRIMARY状态。

ARBITER

处于ARBITER状态的成员不会复制数据,也不接受写入操作。它们有资格投票,且其存在仅出于在选举期间打破平局。如果副本集拥有偶数个有投票权成员,并且可能会出现平局选举,则副本集应该只拥有处于ARBITER状态的成员。在所有副本集中,最多只能配置一个仲裁节点。有关使用仲裁节点时的注意事项,请参阅副本集仲裁节点。

有关核心状态的详细信息,请参阅副本集成员

STARTUP

副本集的每个成员都以STARTUP状态启动。然后, mongod加载该成员的副本集配置,并将该成员的状态转换为STARTUP2ARBITERSTARTUP中的成员没有资格投票,因为它们还不是任何副本集的认可成员。

STARTUP2

5.0 版本中的更改

一旦 完成加载节点的配置,副本集的每个数据承载节点就会进入STARTUP2 mongod状态。

然后,该成员决定是否进行初始同步。如果成员开始初始同步,则该成员将保持STARTUP2状态,直到复制所有数据并构建所有索引。然后,该成员转换为RECOVERING

STARTUP2中新添加的成员没有资格投票,在初始同步进程中也无法当选。在 MongoDB 5之前。 0 , STARTUP2中的成员有资格投票。

RECOVERING

副本集的成员在未准备好接受读取时会进入RECOVERING状态。 RECOVERING状态可以在正常操作期间出现,并且不一定反映错误情况。处于RECOVERING状态的成员有资格在选举中投票,但没有资格进入PRIMARY状态。

复制足够多的数据后,成员会从RECOVERING转换到SECONDARY ,以保证客户端读取的数据视图一致。 RECOVERINGSECONDARY状态之间的唯一区别是RECOVERING禁止客户端读取,而SECONDARY允许客户端读取。 SECONDARY状态不保证主节点的数据过时。

由于过载,从节点可能远远落后于副本集的其他成员,因此可能需要与副本集的其余成员重新同步。发生这种情况时,成员会进入RECOVERING状态并需要手动干预。

ROLLBACK

每当副本集在选举中替换节点时,旧的主节点可能包含未复制到从节点成员的文档。在这种情况下,旧的主节点成员会恢复这些写入。在回滚期间,节点将处于ROLLBACK状态。处于ROLLBACK状态的成员有资格在选举中投票。

从版本4开始。 2 ,当成员进入ROLLBACK状态时,MongoDB 会终止所有正在进行的用户操作。

处于任何错误状态的成员都不能投票。

UNKNOWN

从未向副本集传达过状态信息的成员处于UNKNOWN状态。

DOWN

与副本集失去连接的成员将被该集的其余成员视为DOWN

REMOVED

从副本集中删除的成员会进入REMOVED状态。当成员进入REMOVED状态时,日志将使用replSet REMOVED消息条目标记该事件。

[1]某些情况下,副本集中的两个节点可能会暂时认为它们是主节点,但最多只能有其中一个节点能够完成具有{ w: "majority" }写入关注的写入操作。可以完成{ w: "majority" }写入操作的节点是当前主节点,另一个节点是尚未识别其降级(通常是由于网络分区)的前主节点。发生这种情况时,尽管已请求读取偏好primary,但连接到前主节点的客户端可能会观察到过时数据,并且对前主节点的新写入操作最终将回滚。
← local 数据库
分片 →