当前位置: 首页 > article >正文

聊一聊Elasticsearch的索引分片的恢复机制

1、什么是索引分片的恢复?

所谓索引分片的恢复指的是在某些条件下,索引分片丢失,ES会把某索引的分片复制一份来得到该分片副本的过程。

2、触发分片恢复的场景有哪些?

  • 分片的分配

    当集群中节点的数量发生变化,或者配置了分片的过滤,使得某节点上的分片需要移动到另外一个节点上,就需要进行分片的分配。在分片分配的过程当中,当某个索引的分片缺失,则会通过分片恢复来创建对应的分片。

  • 增加索引的副本数

  • 从索引备份的快照中恢复数据

3、分片恢复的类型

  • 从本地分片复制而来,称为本地存储恢复(local store recovery)。
  • 从其他节点上分片复制而来,称为对等恢复(peer recovery)。
  • 从索引备份的快照文件中恢复的,称为快照恢复(snapshot recovery)。

4、分片恢复的过程

我们假设在一个有3个节点(节点1、节点2、节点3)的集群中创建一个索引(test_index),该索引有3个主分片(P1、P2、P3),每个主分片有1个副本分片(R1、R2、R3)。经过分片分配,每个节点上被分配2个分片,如下图:
在这里插入图片描述
让我们来看看此时的分片分配过程都发生了什么?首先在创建索引的时候,分别在3个节点上创建3个主分片,这三个主分片是在本地创建了3个空分片。然后会将这3个主节点复制到其他节点上产生副本分片(这3个副本分片是从其他节点上的分片复制而来,所以这里发生了3次对等恢复)。

我们再假设下如果节点3下线了会发生什么?节点3下线后,首先要将节点3上的主分片P0恢复,将P0复制到节点1上(我的理解是将节点1上的副本分片R0选举为新的P0主分片),如图:
在这里插入图片描述
然后将缺失的副本(R0、R2)恢复,即分别从节点1上的P0复制到节点2上形成R0,从节点2上的P2复制到节点1上形成R2,如图:
在这里插入图片描述

5、减少不必要的分片恢复

在生产环境中,通常会有很多节点、索引、分片,且索引分片的容量都比较大,若某个节点临时断网或者集群重启时未及时启动所有节点,就会使集群增加很多不必要的分片恢复。

我们可以通过以下两种方式来尽量避免这些不必要的分片恢复:

  1. 延时分片恢复:ES提供了一种索引级别的动态配置,可以通过来指定节点下线多久后开始分片恢复,默认是1分钟。
  2. 调整触发分片恢复的条件:通过ES的elasticsearch.yml文件中添加与网关相关的配置来设置分片恢复的触发条件。

6、参考文献

  • 《Elasticsearch数据搜索与分析实战》——王深湛

上一篇:《聊一聊Elasticsearch的索引的分片分配机制》
下一篇:《聊一聊Elasticsearch的索引数据搜索过程》


http://www.kler.cn/a/403339.html

相关文章:

  • 小蓝了解篇
  • javaScript交互案例
  • 深入理解 Java 阻塞队列:使用场景、原理与性能优化
  • Linux 服务器使用指南:从入门到登录
  • vue3:使用插件递归组件
  • js批量输入地址获取经纬度
  • C#无符号整数类型详解:声明、使用及注意事项
  • Android:时间选择器(最下面有效果图)
  • 【设计模式】【创建型模式(Creational Patterns)】之单例模式
  • 实现两个表格的数据传递(类似于穿梭框)
  • 代码随想录---八股文训练营Day40(总结)
  • 【Unity/Animator动画系统】多层动画状态机实现角色的基本移动
  • 散户持股增厚工具:智能T0算法交易
  • ProtonBase × Data for AI Meetup·杭州站
  • 深度学习:神经网络中线性层的使用
  • 网络协议之邮件协议(SMTP、POP3与IMAP)
  • 路由基础(全)
  • WPF Prism框架
  • WebGL进阶(七)深度缓冲区
  • Vue 3 国际化 (i18n) 最佳实践指南
  • 基于Ruoyi的同一token跨系统访问,后端单点登录并且鉴权方案
  • 手机领夹麦克风哪个牌子好,哪种领夹麦性价比高,热门麦克风推荐
  • 基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)
  • C语言和C++的不同
  • .net6.0(.net Core)读取 appsettings.json 配置文件
  • 在云服务器搭建 Docker