ElasticSearch 节点恢复源码分析

2020-05-29 00:00:00 执行 过程 分片 恢复 省略

以下分析基于ES v5.3.3。

ES的数据恢复是分片(IndexShard)级别的,分片分为主分片及副本分片,根据类型不同,有着不同的恢复策略。按恢复源(在RecoverySource.java定义)不同,可以分为:

  • EMPTY_STORE,EXISTING_STORE,SNAPSHOT,LOCAL_SHARDS--适用于主分片
  • PEER--适用于副本分片


主分片有多种源可以选择,而副分片只有一种策略--从其他伙伴节点恢复。而不管哪种方式,整个恢复过程可分为以下阶段(RecoveryState.java):

INIT((byte) ),

      /**
       * recovery of lucene files, either reusing local ones are copying new ones
       */
      INDEX((byte) 1),

      /**
       * potentially running check index
       */
      VERIFY_INDEX((byte) 2),

      /**
       * starting up the engine, replaying the translog
       */
      TRANSLOG((byte) 3),

      /**
       * performing final task after all translog ops have been done
       */
      FINALIZE((byte) 4),

      DONE((byte) 5);

相关文章