【Elasticsearch】索引恢复(recovery)流程梳理之EXISTING_STORE索引数据恢复

这篇具有很好参考价值的文章主要介绍了【Elasticsearch】索引恢复(recovery)流程梳理之EXISTING_STORE索引数据恢复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

索引recovery是指索引数据恢复,包含以下几种类型

  • EMPTY_STORE, 索引没有数据,一般是新建索引的情况,不用恢复数据
  • EXISTING_STORE, 从本地存储的数据恢复,例如集群重启primary shard进行数据恢复
  • PEER, 从另一个节点恢复数据,例如集群重启replica从primary恢复数据;primary进行relocate到另一个节点
  • SNAPSHOT, 从SNAPSHOT中恢复数据
  • LOCAL_SHARDS,从本节点的其他shard恢复数据,例如shrink操作

recovery过程包含以下几个阶段

  • INIT 初始化阶段,还没开始恢复数据
  • INDEX 恢复Lucene文件,要么复用本地的文件,要么从其他节点复制文件
  • VERIFY_INDEX 对分片(Lucene index)进行检查是否损坏
  • TRANSLOG 启动index engine,重放translog
  • FINALIZE 当translog重放完成后,执行最后的任务
  • DONE recovery结束

今天我们介绍下 从本地存储的数据恢复的recovery流程,后面我会另写一篇博客介绍从另一个节点恢复数据的过程。文章来源地址https://www.toymoban.com/news/detail-801434.html

primary shard重启具体流程

master node

  1. 完成EXISTING_STORE的分片分配,具体流程可见我的另一个博客,广播新的cluster state

data node (updateTask threadpool)

  1. 触发IndicesClusterStateService.applyClusterState,应用集群状态
  2. 触发recovery,状态为init
  3. 标记分片状态为RECOVERING,在generic线程池执行recoverFromStore

data node (generic threadpool)

  1. 更新recovery状态为index,获取最后一个提交点(commit point)的提交的segment info(segment的元数据)。如果有说明索引文件都存在,没有则抛出异常
  2. 用segment info填充recovery state中的lucene index数据,例如cat api就需要这个数据,观测recovery进度。如果是EMPTY_STORE的情况,将在目录下创建Index, translog相关的文件
  3. 进入VERIFY_INDEX阶段。如果开启index.shard.check_on_startup,则检查索引文件(默认关闭),会进行检查checksum或检查文件的每个字节,取决于这个配置
  4. 进入TRANSLOG阶段。打开新的engine,关闭GcDeletes(因为recovery时允许执行doc的CRUD,所以需要保证delete operation不会被丢失,因为delete操作执行后将没有记录。gc_delete详见https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-delete.html)
  5. 生成translog快照,遍历从local checkpoint到最后的每条数据进行回放,回放重走Lucene写入流程
  6. 执行flush来commit新写入的数据,清除translog
  7. 进入FINALIZE阶段。执行refresh,将缓冲数据写入segment,使数据可读;打开GcDeletes
  8. 如果整体流程成功,发送shard started请求给master;失败则发送shard failure

总结

  1. 总流程比较简单,主要是读取本地索引文件的元数据和从translog恢复数据,基于cluster state变更的时间触发,完成时在触发shard started的更新集群状态的请求
  2. ES利用recovery流程完成了新建分片的相关物理文件的创建工作

到了这里,关于【Elasticsearch】索引恢复(recovery)流程梳理之EXISTING_STORE索引数据恢复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch系列-索引原理与数据读写流程

    倒排索引(Inverted Index) 也叫反向索引,有反向索引必有正向索引。通俗地来讲, 正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。 现有索引和映射如下: 先录入如下数据,有三个字段title、price、description等 _id title price descri

    2024年02月08日
    浏览(49)
  • ElasticSearch创建文档以及索引文档的详细流程

            当我们发起一个查询请求之后,ES是怎么处理这个请求然后返回数据的呢?今天就来详细说一下。 首先看一下整体结构:           在集群模式下一个索引有多个分片,在上图中有三个节点(一个主节点两个从节点),一个索引被分为两个分片(P0、P1),每个主分片有两

    2024年02月01日
    浏览(58)
  • Lucene和Solr和Elasticsearch区别,全文检索引擎工具包Lucene索引流程和搜索流程实操

    我们生活中的数据总体分为两种: 结构化数据和非结构化数据 。 结构化数据 :指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据 :指不定长或无固定格式的数据,如 互联网数据、邮件,word文档等。 非结构化数据又有一种叫法叫全文数据 按照数据的

    2024年02月03日
    浏览(44)
  • Oracle Recovery Tools快速恢复断电引起的无法正常启动数据库----惜分飞

    由于异常断电,数据库启动报错ORA-01113和ORA-01110,ORA-00322和ORA-00312以及ORA-00314和ORA-00312错误 Mon Apr 17 09:35:04 2023 ALTER DATABASE OPEN Errors in file D:APPADMINISTRATORdiagrdbmsorclorcltraceorcl_ora_10192.trc: ORA-01113: 文件 1 需要介质恢复 ORA-01110: 数据文件 1: \\\'D:APPADMINISTRATORORADATAORCLSYSTEM01.DBF

    2023年04月21日
    浏览(44)
  • Elasticsearch集群索引写入失败[FORBIDDEN/12/index read-only / allow delete (api)]处理流程

    操作系统:CentOS 7.3 软件版本:elasticsearch-6.7.2 正常将数据写入到Elasticsearch时,发现写入失败,出现如下报错 检查Elasticsearch集群的active master节点的日志,并没有发现error,但有WARN告警,显示与 flood stage disk watermark [90%] 有关。 上下文有 low disk watermark [80%] 的INFO日志信息,再次

    2024年02月10日
    浏览(58)
  • 关于Microsoft支持和恢复助手(Support and Recovery Assistant)卸载后无法再次安装的问题

    之前为了修复Office的问题下载了Microsoft 支持和恢复助手,后面觉得这玩意没什么用,就按照官方建议从控制面板直接卸载了。 但是!但是!!这种卸载方式并不彻底! ,等到我为了重装Visio又准备把它安装回来时,惊喜地发现安装程序提醒我已经安装过支持和恢复助手了(想

    2024年02月05日
    浏览(118)
  • Alienware外星人原装系统出厂系统原机开箱系统远程安装,带F12恢复功能SupportAssist OS Recovery

    戴尔和外星人原厂系统安装过程展示,带Support Assist OS Recovery出厂重置功能 [1]远程安装原机预装系统,专用Alienware系统部署工具,恢复原机开箱系统状态,自带外星人壁纸、系统logo、所有驱动、外星人软件、Macfee杀毒、Office软件等,不同机器系统不一样,均提取自同型号国行

    2024年02月10日
    浏览(153)
  • MySQL 索引常见问题汇总,一次性梳理

    hello,大家好,我是张张,「架构精进之路」公号作者。   提到MySQL查询分析,就会涉及到索引相关知识,要想学好MySQL,索引是重要且不得不啃下的一环,今天就把MySQL索引常见问题进行汇总,一次性梳理清楚。 文章目录: 索引 什么是索引? 索引的优缺点? 索引的作用?

    2024年02月07日
    浏览(55)
  • TinyKv流程梳理三

    split流程 处理协程启动 point1:  peerSender也就是raftCh 请求启动过程    触发上面的point1      handleMsg---------》  心跳更新region

    2024年02月16日
    浏览(35)
  • 运维流程梳理

    在这里只是结合个人的经验,提供另外一个看待运维的角度。 1. 梳理流程目的(为什么) 解决当前运维过程中遇到问题 将平常在做的事,抽象成部分可识别的框架。 通过实践验证更新流程,规范工作,提高工作效率 流程可追溯有记录,能够形成有用的文档。 2. 运维涉及流

    2023年04月22日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包