Each member of a replica set has a state.副本集的每个成员都有一个状态。
Number | ||
---|---|---|
0 | STARTUP | mongod parses the replica set configuration document while in STARTUP .mongod 在STARTUP 时解析副本集配置文档。
|
1 | PRIMARY | |
2 | SECONDARY | |
3 | RECOVERING | |
5 | STARTUP2 |
|
6 | UNKNOWN | |
7 | ARBITER | |
8 | DOWN | |
9 | ROLLBACK |
|
10 | REMOVED |
PRIMARY
Members in 处于PRIMARY
state accept write operations. PRIMARY
状态的成员接受写操作。A replica set has at most one primary at a time. 副本集一次最多有一个主副本。[1] A SECONDARY
member becomes primary after an election. SECONDARY
成员在选举后成为primary。Members in the PRIMARY
state are eligible to vote.PRIMARY
状态的成员有资格投票。
SECONDARY
Members in 处于SECONDARY
state replicate the primary's data set and can be configured to accept read operations. SECONDARY
状态的成员复制主数据集,并且可以配置为接受读取操作。Secondaries are eligible to vote in elections, and may be elected to the PRIMARY
state if the primary becomes unavailable.secondary
有资格在选举中投票,如果初选无法进行,则可以当选为PRIMARY
状态。
ARBITER
Members in 处于ARBITER
state do not replicate data or accept write operations. ARBITER
状态的成员不复制数据或接受写操作。They are eligible to vote, and exist solely to break a tie during elections. 他们有资格投票,他们的存在只是为了在选举中打破僵局。Replica sets should only have a member in the 如果复制集只有偶数个有投票权的成员,并且可能遭受平局选举,则复制集只能有一个成员处于ARBITER
state if the set would otherwise have an even number of voting members, and could suffer from tied elections. ARBITER
状态。There should only be at most one arbiter configured in any replica set. 任何副本集中最多只能配置一个仲裁器。For considerations when using an arbiter, see Replica Set Arbiter.有关使用仲裁器时的注意事项,请参阅副本集仲裁器。
See Replica Set Members for more information on core states.有关核心状态的更多信息,请参阅副本集成员。
STARTUP
Each member of a replica set starts up in 副本集的每个成员都以STARTUP
state. STARTUP
状态启动。mongod
then loads that member's replica set configuration, and transitions the member's state to STARTUP2
or ARBITER
. mongod
然后加载该成员的副本集配置,并将该成员的状态转换为STARTUP2
或ARBITER
。Members in STARTUP
are not eligible to vote, as they are not yet a recognized member of any replica set.STARTUP
中的成员没有资格投票,因为他们还不是任何副本集的公认成员。
STARTUP2
Each data-bearing member of a replica set enters the 复制集的每个数据承载成员在STARTUP2
state as soon as mongod
finishes loading that member's configuration, at which time it becomes an active member of the replica set and is eligible to vote.mongod
完成加载该成员的配置后,立即进入STARTUP2
状态,此时它将成为复制集的活动成员并有资格投票。
The member then decides whether or not to undertake an initial sync. 然后,成员决定是否进行初始同步。If a member begins an initial sync, the member remains in 如果成员开始初始同步,则该成员将保留在STARTUP2
until all data is copied and all indexes are built. STARTUP2
中,直到复制所有数据并构建所有索引。Afterwards, the member transitions to 然后,成员转换到RECOVERING
.RECOVERING
。
Starting in MongoDB 5.0, if the member was newly added to the replica set, it is not eligible to vote and cannot be elected during the initial sync process.从MongoDB 5.0开始,如果成员是新添加到副本集的,则该成员没有投票资格,在初始同步过程中无法当选。
RECOVERING
A member of a replica set enters 副本集的成员在未准备好接受读取时进入RECOVERING
state when it is not ready to accept reads. RECOVERING
状态。The RECOVERING
state can occur during normal operation, and doesn't necessarily reflect an error condition. RECOVERING
状态可能发生在正常操作期间,并不一定反映错误情况。Members in the RECOVERING
state are eligible to vote in elections, but are not eligible to enter the PRIMARY
state.RECOVERING
状态的成员有资格在选举中投票,但没有资格进入PRIMARY
状态。
A member transitions from 复制足够的数据以确保客户端读取的数据视图一致后,成员从RECOVERING
to SECONDARY
after replicating enough data to guarantee a consistent view of the data for client reads. RECOVERING
转换到SECONDARY
。The only difference between RECOVERING
and SECONDARY
states is that RECOVERING
prohibits client reads and SECONDARY
permits them. RECOVERING
和SECONDARY
状态之间的唯一区别是RECOVERING
禁止客户端读取,SECONDARY
允许客户端读取。SECONDARY
state does not guarantee anything about the staleness of the data with respect to the primary.状态不保证数据相对于主数据的陈旧性。
Due to overload, a secondary may fall far enough behind the other members of the replica set such that it may need to resync with the rest of the set. 由于过载,secondary可能远远落后于副本集的其他成员,因此可能需要与副本集的其余成员重新同步。When this happens, the member enters the 发生这种情况时,成员将进入RECOVERING
state and requires manual intervention.RECOVERING
状态,需要手动干预。
ROLLBACK
Whenever the replica set replaces a primary in an election, the old primary may contain documents that did not replicate to the secondary members. 每当副本集在选举中替换primary时,旧的primary可能包含未复制到secondary成员的文档。In this case, the old primary member reverts those writes. 在这种情况下,旧的主要成员将恢复这些写入。During rollback, the member will have 回滚期间,成员将处于ROLLBACK
state. ROLLBACK
状态。Members in the ROLLBACK
state are eligible to vote in elections.ROLLBACK
状态的成员有资格在选举中投票。
Starting in version 4.2, MongoDB kills all in-progress user operations when a member enters the 从4.2版开始,当成员进入ROLLBACK
state.ROLLBACK
状态时,MongoDB会终止所有正在进行的用户操作。
Members in any error state can't vote.处于任何错误状态的成员都不能投票。
UNKNOWN
Members that have never communicated status information to the replica set are in the 从未向副本集传递状态信息的成员处于UNKNOWN
state.UNKNOWN
状态。
DOWN
Members that lose their connection to the replica set are seen as 失去与副本集连接的成员被该集的其余成员视为DOWN
by the remaining members of the set.DOWN
。
REMOVED
Members that are removed from the replica set enter the 从副本集中删除的成员将进入REMOVED
state. REMOVED
状态。When members enter the 当成员进入REMOVED
state, the logs will mark this event with a replSet REMOVED
message entry.REMOVED
状态时,日志将用replSet REMOVED
消息条目标记此事件。
[1] | { w: "majority" } write concern. { w: "majority" } 写操作。{ w: "majority" } writes is the current primary, and the other node is a former primary that has not yet recognized its demotion, typically due to a network partition. { w: "majority" } 写入的节点是当前主节点,而另一个节点是尚未识别其降级的前主节点,通常是由于网络分区。primary , and new writes to the former primary will eventually roll back.primary ,但对前一个主机的新写入最终会回滚。 |