ElasticSearch 节点恢复源码分析
以下分析基于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);
相关文章