美文网首页
【mongoDB】mongoDB的副本集成员状态state解析

【mongoDB】mongoDB的副本集成员状态state解析

作者: Bogon | 来源:发表于2023-04-01 15:17 被阅读0次

    停掉数据库,直接删除本地数据,然后启动mongodb数据库,启动之后存在一个同步的过程,会非常耗时。

    副本集的每个成员都有一个状态,反映了它在集合中的配置情况:

    image.png

    PRIMARY

    处于PRIMARY状态的成员才能接受写操作。
    一个副本集每次最多只有一个主成员。
    在一次选举后,一个SECONDARY状态成员成为主成员,处于PRIMARY状态的成员有资格选举。

    SECONDARY

    处于SECONDARY状态的成员复制主成员的数据集合,并可以被配置为接受读操作。
    辅助成员有资格在选举中投票,如果主成员不可用,会被选举为PRIMARY状态。

    ARBITER

    处于ARBITER状态的成员不复制数据,也不接受写操作。
    它们有资格选举,仅仅存在于选举中决胜负。
    如果集合要么有大量的成员,并能够参与决胜选举,否则副本集应该只有一个成员处于ARBITER状态。
    在任何副本集中最多只有一个仲裁被配置。

    STARTUP

    副本集的每个成员以STARTUP状态启动mongoDB,然后加载成员的副本集配置,成员的状态转化为STARTUP2。
    在STARTUP状态的成员没有资格选举,因为它们不被人为是任何副本集的成员。

    STARTUP2

    一旦mongoDB加载成员配置完成,副本集的每个成员就进入STARTUP2状态,在此时它开始成员副本集的一个活动成员。
    成员然后决定是否需要初始化同步。
    如果一个成员开始初始化同步,成员保持STARTUP2状态直到所有数据拷贝完成所有索引创建完成,之后成员转换为RECOVERING状态。

    RECOVERING

    当副本集成员不准备接受读取时,它进入RECOVERING状态。
    RECOVERING状态发生在正常操作期间,不必显示一个错误条件。
    处于RECOVERING状态的成员有资格在选举中投票,但是没有资格进入PRIMARY状态。

    在复制足够的数据给客户端所需读取数据的一致性视图,成员便从RECOVERING状态转为SECONDARY状态。
    在RECOVERING和SECONDARY状态之间的唯一区别是,RECOVERING阻止客户端读取,SECONDARY运行读取。SECONDARY状态并不保证主成员数据陈旧化。

    注:关于负载,一个辅助成员可能会远远落后于副本集的其他成员,以至于它可能需要重新同步数据到副本集。当这种情况发生时,成员进入RECOVERING状态,并需要手工干预。

    错误状态,处于错误状态的成员不能选举。

    UNKNOWN

    从没交流状态信息到副本集的成员会处于UNKNOWN状态。

    DOWN

    丢失到副本集连接的成员被集合的剩余成员看作为DOWN状态。

    REMOVED

    从副本集移除的成员进入REMOVED状态。当成员进入REMOVED状态,日志将会标记replset REMOVED消息事件。

    ROLLBACK

    当副本集在选举中替换掉主成员,旧的主成员可能包含不会复制到辅助成员的文档。在这种情况下,旧的主成员反转这些写操作。在回滚期间,成员将保持ROLLBACK状态。

    FATAL

    处于FATAL状态的成员触发了一个不可恢复错误。成员必需关闭并重启,可能还需要重新同步。

    相关文章

      网友评论

          本文标题:【mongoDB】mongoDB的副本集成员状态state解析

          本文链接:https://www.haomeiwen.com/subject/fcokddtx.html