【Elasticsearch】索引恢复(recovery)流程梳理之副本分片数据恢复

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

replica shard重启具体流程

【Elasticsearch】索引恢复(recovery)流程梳理之副本分片数据恢复,elasticsearch,mybatis,大数据

replica shard node (generic threadpool)

  1. 也是因为应用新的集群状态触发recovery,进入index阶段
  2. 进入translog 阶段。先尝试重放本地的translog到global checkpoint
  3. 向primary shard发起start recovery的请求,请求包含replica的localCheckpoint+1。(如果第二步重放translog了,localCheckpoint自然也会增加)

primary shard node

  1. 如果开启了soft delete并且索引是7.4版本之后创建的(retention lease功能),则使用lucene index作为HistorySource,否则使用translog
  2. 判断是否可以根据seq no按条恢复数据而不是发送segment file,即跳过phase 1,判断需要满足以下条件(其实就是看能不能使用retention lease/translog回放)
    • replica不是没有数据
    • primary shard的retention lease或者translog(取决于history source)包含所有要recovery的数据,retention lease会判断soft delete保存的seq no 是否小于 request.startingSeqNo(replica 开始恢复的seq no)
    • 对于retention lease,需要包含replica没有的数据,判断retentionLease.seqNo < request.startingSeqNo
  3. 执行phase 1——sendFileStep。有限速配置indices.recovery.max_bytes_per_sec
  4. 如果primary和replica的sync id, local checkpoint, maxSeqNo都相同则跳过phase1
  5. 对比primary和replica的segment file元数据,发送所有replica缺失或者不同的segment file
  6. 同步发送给replica请求,让他启动engine准备接收translog
  7. 将replica shard加入replication group,replica将接收到后续的replication request,并确保在下一步中采样最大序列号之前执行此操作,以确保在phase 2发送所有seq No直到 maxSeqNo 的所有文档,保证replica不缺数据。
  8. 执行phase 2。如果是retention lease则直接从Lucene查询出需要发送的doc,如果是translog则获取一个translog的快照,将数据分批发送到replica

Replica shard node

  1. replica 会接收primary的segment file,translog,打开engine的请求
  2. 最后进入进入FINALIZE阶段。执行refresh

一致性问题

因为replica恢复时的phase2阶段既有新写入的replication,也有回放的doc,此时如果针对doc 1有两个更新操作,第一个在回放的操作中,第二个在新的replication,然后replica先执行了replication再执行回放会导致数据不一致,ES通过校验version来解决这个问题,第一个操作的version小于第二个操作,因此即使第一个操作后到达也会被拒绝。文章来源地址https://www.toymoban.com/news/detail-808935.html

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

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

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

相关文章

  • 【Elasticsearch】存在数据的分片分配流程梳理

    由于master节点只保存了cluster级别和indices级别的元数据,但没有shard在哪个node上的元数据,需要走一遍allocation流程确定每个shard分配到哪个节点,allocation使用allocator和deciders进行节点选择,allocator负责整个流程会找出哪些节点可以分配,deciders通过多个decider判断该节点能否分

    2024年02月02日
    浏览(41)
  • ElasticSearch--分片和副本--原理

    原文网址:ElasticSearch--分片和副本--原理_IT利刃出鞘的博客-CSDN博客 说明 本文介绍ES的分片和副本的原理。 粉丝福利 :有很多粉丝私信问我有没有Java的面试及PDF书籍等资料,我整理一下,包含: 真实 面试题汇总、简历模板、PDF书籍、PPT模板等。这些是 我自己也在用 的资料

    2023年04月09日
    浏览(42)
  • Elasticsearch的分片和副本

    Elasticsearch是一个分布式搜索和分析引擎,其设计目标是在分布式环境下处理海量数据。为了实现这个目标,Elasticsearch将数据分割成多个分片,并在多台服务器上进行存储和处理。每个分片都是一个独立的Lucene索引,可以被分配到不同的节点上。 分片可以帮助Elasticsearch水平扩

    2024年02月17日
    浏览(52)
  • elasticsearch副本和分片

    1.文档冲突 当我们使用index API更新文档,可以一次性读取 修改索引副本 看起来您正在尝试修改一个已经打开的索引的非动态设置index.number_of_shards。在默认情况下,Elasticsearch不允许在索引处于打开状态时修改非动态(不可更改)的设置。 curl -XPOST http://192.168.1.136:9200/es-syslo

    2024年01月17日
    浏览(49)
  • ES创建索引模板设置分片和副本数及时间格式问题

    创建索引模板设置分片和副本及时间格式问题 一、创建索引模板 二、插入测试数据 三、查看索引情况(cerebro可视化插件) 查看分片和副本情况 查看字段 四、通kibana查看数据 五、最后补充下kibana设置时间格式显示问题

    2024年02月16日
    浏览(39)
  • elasticsearch的副本和分片的区别

    es/elasticsearch的副本和分片的区别 一:概念 (1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 (2)节点(Node): 形成集群的每个服务器称

    2024年02月11日
    浏览(46)
  • Elasticsearch 的节点、集群、分片和副本 全面解析

    节点是 Elasticsearch 实例的运行实例,即一个独立的 Elasticsearch 服务进程。每个节点都是一个独立的工作单元,负责存储数据、参与数据处理(如索引、搜索、聚合等)以及参与集群的协调工作。节点可以在物理或虚拟机上单独部署,也可以在同一台机器上运行多个节点(但需

    2024年04月27日
    浏览(39)
  • ElasticSearch修改分片数和副本数及增加字段

    一、修改副本数 PUT test/_settings {     \\\"index\\\": {         \\\"number_of_replicas\\\" : 1     } } 二、修改分片数 ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。如果

    2024年02月05日
    浏览(46)
  • ElasticSearch数据库修改分片数、副本数及修改mapping字段

            对于已经存在的索引,副本数可以随时修改。 示例演示如下:         ElasticSearch中的数据会被分别存储在不同的分片上,索引库的分片数量是在索引库创建的时候通过settings去设置的,如果不设置,分片数默认是5,分片数一旦确定就不能改变。分片数量的设

    2024年02月02日
    浏览(48)
  • 【elasticsearch】修改es集群的索引副本数量

    最近海外es集群进行调整,从3节点变成了单节点。所以需要将集群模式改为单点模式,并需要将es 集群的全部索引副本个数改为0,不然会有很多未分配的分片,导致集群状态为 yellow 。 1. 先将现有的index的副本数量为0个 此步骤是为了解决现有的索引副本数。 2. 创建模板匹配

    2024年02月11日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包