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

replica shard重启具体流程

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小于第二个操作,因此即使第一个操作后到达也会被拒绝。

相关推荐
liguojun20251 分钟前
篮球馆自动计时收费系统:从规则配置到自动结算的全流程拆解
java·大数据·运维·人工智能·物联网·1024程序员节
大任视点4 分钟前
互动之星AI剧集新作上线48小时收益破50万元,树立AI精品剧集商业化新标杆
大数据·人工智能·业界资讯
Promise微笑21 分钟前
红外分辨率 160×120、320×240、384×288 与 640×480实战选型指南
大数据·运维·人工智能·物联网
QN1幻化引擎37 分钟前
给 AI 做一次「意识体检」——基于 QN1 幻化引擎的灵鉴意识识别框架与 DalinX V5 实测
大数据·数据结构·人工智能·算法·架构
GEO_ai_zhijian1 小时前
饮料生产线质量检测系统供应商哪家强
大数据·python
CryptoPP2 小时前
BSE股票K线数据接入实战:从接口调用到前端图表展示
大数据·前端·网络·人工智能·websocket·网络协议
得闲喝茶2 小时前
跨表数据匹配——VLOOKUP、XLOOKUP
大数据·数据库·笔记·信息可视化·数据分析·excel
码农阿强2 小时前
GPT-5.6 Sol/Terra/Luna 三模型全量上架StartAPI|分层选型+可运行调用代码实战
大数据·人工智能·gpt·ai·aigc
zandy10112 小时前
体验家 XMPlus 批量操作与自动化工作流引擎:让大规模运营从手动执行走向规则驱动
大数据·运维·自动化
科技发布3 小时前
可出具正规收录回执广告平台推荐,朝闻通合规投放满足企业审计需求
大数据·人工智能·科技·媒体