首页 > 其他分享 >ElasticSearch recovery流程

ElasticSearch recovery流程

时间:2022-12-24 17:00:41浏览次数:34  
标签:快照 recovery translog 流程 Lucene ElasticSearch 分片 操作

为什么需要recovery?对于主分片来说,可能有一些数据没来得及
刷盘;对于副分片来说,一是没刷盘,二是主分片写完了,副分片还没
来得及写,主副分片数据不一致。
1. 主分片recovery
由于每次写操作都会记录事务日志(translog),事务日志中记录
了哪种操作,以及相关的数据。因此将最后一次提交(Lucene 的一次提
交就是一次 fsync 刷盘的过程)之后的 translog中进行重放,建立Lucene
索引,如此完成主分片的recovery。
2. 副分片recovery
副分片的恢复是比较复杂的,在ES的版本迭代中,副分片恢复策略
有过不少调整。
副分片需要恢复成与主分片一致,同时,恢复期间允许新的索引操
作。在目前的6.0版本中,恢复分成两阶段执行。
· phase1:在主分片所在节点,获取translog保留锁,从获取保留锁
开始,会保留translog不受其刷盘清空的影响。然后调用Lucene接口把
shard做快照,这是已经刷磁盘中的分片数据。把这些shard数据复制到
副本节点。在phase1完毕前,会向副分片节点发送告知对方启动
engine,在phase2开始之前,副分片就可以正常处理写请求了。
· phase2:对translog做快照,这个快照里包含从phase1开始,到执
行translog快照期间的新增索引。将这些translog发送到副分片所在节点
进行重放。
由于需要支持恢复期间的新增写操作(让ES的可用性更强),这两
个阶段中需要重点关注以下几个问题。
分片数据完整性:如何做到副分片不丢数据?第二阶段的 translog
快照包括第一阶段所有的新增操作。那么第一阶段执行期间如果发
生“Lucene commit”(将文件系统写缓冲中的数据刷盘,并清空
translog),清除translog怎么办?在ES 2.0之前,是阻止了刷新操作,以
此让translog都保留下来。从2.0版本开始,为了避免这种做法产生过大
的translog,引入了translog.view的概念,创建 view 可以获取后续的所有
操作。从6.0版本开始,translog.view 被移除。引入
TranslogDeletionPolicy的概念,它将translog做一个快照来保持translog不
被清理。这样实现了在第一阶段允许Lucene commit。

标签:快照,recovery,translog,流程,Lucene,ElasticSearch,分片,操作
From: https://www.cnblogs.com/lovezhr/p/17003038.html

相关文章

  • 由SOFARPC示例介绍基本流程和基础源码
    由SOFARPC示例介绍基本流程和基础源码1.Server先看Server端测试方法:publicclassQuickStartServer{publicstaticvoidmain(String[]args){Serv......
  • Elasticsearch循序渐进
    前言规划部署1、系统初始化1、修改/etc/security/limits.conf下载wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-linux-x86_6......
  • docker安装elasticsearch时max virtual memory areas vm.max_count(65530) is too low
    利用docker-compose安装elasticsearch时启动失败的异常解决maxvirtualmemoryareasvm.max_count(65530)istoolow...一.异常现象我在利用docker-compose进行elasticse......
  • 火山引擎 DataTester 上线“流程画布”功能,支持组合型 A/B 实验分析
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群在精细化运营的时代,运营活动同样需要有精细化的策略,例如在年末大促活动中,设计APP......
  • 美颜SDK一键美颜的算法实现流程
    大家在使用美颜sdk时肯定用到过“一键美颜”这个功能,而一键美颜中又分为许多风格,从另一个角度来看,这更像是美颜sdk滤镜。总体来讲,一个效果比较好的“一键美颜”会涉及各种各......
  • windows下CEF3的关闭流程《转》
    原文地址:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md=============================================================================我来说......
  • Spring Security 流程
    SpringSecurity流程登录时获取用户信息用SysUserService.getUserAuthInfo方法,获取权角色和权限信息,存放在userAuthInfo中,生成UserDetails对象在UserDetails类中存放au......
  • 2.Java基本语法(下):程序流程控制
    五、程序流程控制顺序结构程序从上到下逐行地执行,中间没有任何判断和跳转。分支结构有if…else和switch-case两种分支语句。循环结构有while、do…while、for三种循环语句注......
  • (一)elasticsearch 编译和启动
    1.准备先从github官网上cloneelasticsearch源码到本地,选择合适的分支。笔者这里选用的是7.4.0(与笔者工作环境使用的分支一致),此版本编译需要jdk11。2.编译Readme中说明......
  • 软件开发流程
    瑞吉外卖学习笔记设计流程:需求分析>>产品原型,需求规格说明书设计>>>产品文档,UI界面,概要设计,详细设计,数据库设计-----设计人员编码>>>项目代码,单元测试-----设计......