ElasticSearch 源码分析 十一 索引恢复流程

使用Translog 来恢复 fileSystem cache丢失的数据

索引的恢复分为以下几种:

  1. EXISTING_STORE : 主分片从本地恢复

        1.1 启动一个新的线程池,执行主分片的恢复。调用recoverFromStore

  1.2 先判断canRecover: 索引的分片不能是closed,当前不能是主分片,必须是副分片

  1.3 然后就是从该shard的store中恢复数据,读取最后一次提交的分段信息,获取其中的版本号,更新当前索引版本

  1.4  verify index : 检查索引是否损坏

  1.5 调用   indexShard.performTranslogRecovery(indexShouldExists);  从transLog中恢复索引数据

      根据最后一次提交的信息作为快照,来确定事务日志中有哪些数据需要重放,然后调用flush方法把索引数据刷入磁盘。

  1.6 进入Finalize,把缓冲也就是index Buffer的数据,写入到文件缓存 fileSystem cache,但是不刷盘

  1.7 最后再次执行refresh,把分片状态更新为DONE

2.PEER :副分片从远程主分片恢复

   

恢复流程图如下:

  

3.SNAPSHOT : 从快照恢复

4.LOCAL_SHARDS:从本节点的其他分片恢复 (shrink情况)

发布了365 篇原创文章 · 获赞 2 · 访问量 7431

猜你喜欢

转载自blog.csdn.net/kuaipao19950507/article/details/104241144
今日推荐