Elasitcsearch7.X集群/索引备份与恢复实战
文章转载自:https://mp.weixin.qq.com/s/_0RlojDsE30CeDSyLNP44w
1、问题引出
ES中文社区中,有如下问题:
问题1:存储数据,data目录从一个机器直接移到一台新的机器是否可以直接使用?
问题2:es升级时,data目录如果在外部路径,从低版本升级到高版本时,data目录是否直接可以使用?
问题3:将一个旧的es数据(400多G)迁移到新的es中的时候直接将旧es的data目录下indices文件拷贝到新es的data下(大概花了一个晚上),这种做法是否可取?
脑补一下,如果你遇到上述问题,你一般怎么解决?
2、问题分析
上述问题涉及到集群备份、索引数据备份、数据迁移、数据恢复等问题,而数据备份和恢复又分为:
- 1、ES Mapping&Setting 基础信息备份。
- 2、ES 全量数据备份。
- 3、ES 增量数据备份。
- 4、ES 数据恢复
3、常见备份和恢复索引/集群方案
- 方案一:使用ES的快照和恢复功能进行备份和恢复。
该方案适用于:集群整体备份与迁移,包括:全量、增量贝恩和恢复。
- 方案二:使用elasticdump迁移Mapping和数据。
该方案适用于:索引层面迁移数据或Mapping,支持:analyzer/Mapping/data的迁移操作。
相比于:reindex跨集群操作,elasticdump无需在ES集群的配置文件elasteicsearch.yml中设置授权迁移访问地址(白名单)。
- 方案三:使用reindex实行集群内部或跨集群同步数据。
该方案适用于:本地索引更新Mapping实现索引层面迁移,或者跨集群的索引迁移。
缺点:如前所述,跨集群迁移需要elasticsearch.yml中加上ip白名单。
4、直接拷贝文件能不能实现集群备份呢?
官方文档指出:你不能仅通过获取集群所有节点的数据目录副本来备份Elasticsearch集群。 Elasticsearch可能在运行时对其数据目录的内容进行更改; 复制其数据目录不能达到捕获其内容的一致快照的预期。
如果尝试通过拷贝文件备份还原集群,将会导致失败,会报文件损坏或丢失文件的错误。 或者,看似成功了,但却丢失了一些数据。
备份集群的唯一可靠方法是使用快照和还原功能。
5、方案一:Elasticsearch快照和还原功能
5.1 快照注意事项
- 1、快照是从正在运行的Elasticsearch集群中获取的备份。
- 2、您可以创建单个索引或整个群集的快照,支持本地文件存储,以及远程第三方存储库存储(包括:S3,HDFS,Azure,Google Cloud Storage等)。
- 3、快照是增量创建的。这意味着,当创建索引快照时,Elasticsearch避免复制任何已存储在存储库中的数据作为同一索引的早期快照的一部分。因此,可以非常频繁地为集群创建快照。
- 4、如果您的集群启用了Elasticsearch安全功能,则在备份数据时,必须授权快照API调用。
- 5、在升级之前备份数据时,请记住,如果快照中包含与升级版本不兼容的版本中创建的索引,则可能导致升级后将无法还原快照。
- 6、兼容列表如下:
- 在1.x中创建的索引快照可以恢复到2.x。
- 在2.x中创建的索引快照可以恢复到5.x。
- 在5.x中创建的索引快照可以恢复到6.x。
- 在6.x中创建的索引快照可以恢复到7.x。
反例:无法将在1.x中创建的索引快照还原到5.x或6.x,无法将在2.x中创建的索引快照还原到6.x或7.x,以及无法将在5.X创建的索引快照还原到7.x。
- 7、要保证还原的集群有足够的存储容量。
5.2 快照执行步骤
以下操作在windows10单节点集群环境 ES7.2 Kibana7.2上执行,linux原理一致。
5.2.1 步骤1:配置快照存储路径及注册快照存储库
在elasticsearch中添加如下配置:
path.repo: ["D:\\install\\elasticsearch-7.2.0-windows-x86_64\\elasticsearch-7.2.0\\backup"]
注册快照存储库(即设置存储路径)
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "D:\\install\\elasticsearch-7.2.0-windows-x86_64\\elasticsearch-7.2.0\\backup"
}
}
5.2.2 步骤2:拍摄快照
步骤2.1:全量备份——拍摄集群快照
想象成拍照的点击确认的那一刻。
PUT /_snapshot/my_backup/snapshot_cluster?wait_for_completion=true
执行返回结果核心包括:
快照索引信息
快照执行起始时间、持续时间
成功、失败分片数等
步骤2.2:按需备份——拍摄索引快照
PUT /_snapshot/my_backup/snapshot_hamlet_index?wait_for_completion=true
{
"indices": "hamlet_*",
"ignore_unavailable": true,
"include_global_state": false,
"metadata": {
"taken_by": "mingyi",
"taken_because": "backup before upgrading"
}
}
步骤2.3 增量备份——同步骤2.1
假设ES有实时数据持续写入,不同时间点会生成不同的快照。
步骤2.1, 2.2, 2.3 非串行执行,可以按需选择执行即可。
5.2.3 步骤3:恢复快照
- 步骤3.1 恢复索引快照
为验证效果,我们先执行了删除索引操作。
DELETE hamlet_*
POST /_snapshot/my_backup/snapshot_hamlet_index/_restore
执行成功后返回:
{
"accepted" : true
}
- 步骤3.2 恢复集群快照
为验证效果,我们先执行了 DELETE * 删除全部索引(实际线上环境注意规避风险)
POST /_snapshot/my_backup/snapshot_cluster/_restore
5.3 快照常见操作
1、查看所有快照存储库
GET /_snapshot/_all
2、查看快照状态
GET /_snapshot/my_backup/snapshot_hamlet_index/_status
3、删除快照
DELETE /_snapshot/my_backup/snapshot_hamlet_index
6、方案二:elasticdump迁移
同mysql dump功能,严格讲elasticdump有导入、导出数据的功能。
背景:
- 192.168.1.1:9200 迁移源集群,
- 192.168.3.2:9200 迁移目的集群。
6.1 迁移Setting和Mapping等
elasticdump \
--input=http://192.168.1.1:9200/my_index \
--output=http://192.168.3.2:9200/my_index \
--type=analyzer
elasticdump \
--input=http://192.168.1.1:9200/my_index \
--output=http://192.168.3.2:9200/my_index \
--type=settings
elasticdump \
--input=http://192.168.1.1:9200/my_index \
--output=http://192.168.3.2:9200/my_index \
--type=mapping
6.2 迁移数据
elasticdump \
--input=http://192.168.1.1:9200/my_index \
--output=http://192.168.3.2:9200/my_index \
--type=data
细节参见:https://github.com/taskrabbit/elasticsearch-dump
7、最常见问题
7.1 多节点集群如何配置才能实现快照?
第一:建立共享文件系统:如NFS共享,确定每一个节点挂载到指定路径,才能创建快照存储库。
第二:在所有的主节点、数据节点都要配置相同的path.repo。
7.2 相同名称索引存在的情况下执行恢复快照?
会报错如下:
英文reason里面已经给出解决方案。
{
"error": {
"root_cause": [
{
"type": "snapshot_restore_exception",
"reason": "[my_backup:snapshot_cluster/_THlX1vMQvGmwxcRCmhnlA] cannot restore index [.kibana_task_manager] because an open index with same name already exists in the cluster. Either close or delete the existing index or restore the index under a different name by providing a rename pattern and replacement name"
}
],
8、小结
本文依然比较基础,实战出真知。
Elasitcsearch7.X集群/索引备份与恢复实战的更多相关文章
- 负载均衡集群企业级应用实战—LVS
一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...
- 项目实战:负载均衡集群企业级应用实战—LVS详解
目录 一.负载均衡集群介绍 二.lvs 的介绍 三.LVS负载均衡四种工作模式 1.NAT工作模式 2.DR工作模式 3.TUN工作模式 4.full-nat 工作模式 5.四者的区别 四.LVS i ...
- solr集群与项目实战
什么是 SolrCloud : SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时 ...
- 【开源组件】FastDFS集群搭建与实战
FastDFS是一个轻量级的分布式文件系统,在实际生产环境往往以集群的形式部署,保证了服务的高可用.本文重点阐述FastDFS集群的搭建和项目实战. 工作流程 上传流程图 下载流程图 基本概念可参考作 ...
- elasticsearch5.0.1集群索引分片丢失的处理
elasticdump命令安装 yum install npm npm install elasticdump -g 命令安装完毕,可以测试. 可能会报出nodejs的版本之类的错误,你需要升级一下版 ...
- Elasticsearch 节点磁盘使用率过高,导致ES集群索引无副本
目录 一.问题 二.问题的原因 三.问题解决的办法 1. 扩大磁盘 2. 删除部分历史索引 3. 更改es设置 四.扩展 一.问题 最近在查看线上的 es,发现最近2天的索引没有副本,集群的状态也是为 ...
- ES:在线迁移集群索引,数据不丢失
一.背景 生产环境由于某些原因需要跨机房迁移ES集群,或者同机房原有集群中所有节点全部更换,期间ES索引要求完整,客户端请求中断不超过五分钟. 二.应用场景 1.同机房不同集群之间数据迁移: 2.跨机 ...
- K8S集群etcd备份与恢复
参考链接: K8S集群多master:Etcd v3备份与恢复 K8S集群单master:Kubernetes Etcd 数据备份与恢复 ETCD系列之一:简介:https://developer.a ...
- hadoop集群安装_实战
spark1.6.2+ hadoop2.6.2 词频统计完整案例:http://blog.csdn.net/zythy/article/details/17852579 hadoop学习:http:/ ...
随机推荐
- SHT11和SHT21传感器
1.传感器概述 SHT11和SHT21为瑞士Sensirion公司生产,精度和测量范围较广,但价格较高.SHT11和SHT21是具有IIC总线接口的单片全校准数字式相对湿度和温度传感器.该传感器采用独 ...
- AOP-动态代理
动态代理的原理代理设计模式的原理:使用一个代理将原本对象包装起来,然后用该代理对象"取代"原始对象.任何对原始对象的调用都要通过代理.代理对象决定是否以及何时将方法调用转到原始对象 ...
- shell脚本处理二进制数据
正确处理二进制数据 正确处理二进制数据必须保证以下三个环节是二进制安全(Binary Safe)的: 从文件读取至内存: 处理数据过程中: 内存写入至文件. 那么二进制安全是什么?通俗来说就是不会特殊 ...
- JavaScript进阶知识点——函数和对象详解
JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...
- NC15665 maze
题目链接 题目 题目描述 小明来到一个由n x m个格子组成的迷宫,有些格子是陷阱,用'#'表示,小明进入陷阱就会死亡,'.'表示没有陷阱.小明所在的位置用'S'表示,目的地用'T'表示. 小明只能向 ...
- 【破解】设置 Codesys for Raspberry 每118分钟自动重启Runtime
Codesys for Raspberry 无授权时,试用2小时后会自动退出,重启Runtime后就又恢复2小时试用时长. 官网授权购买地址: [单核] https://store.codesys.c ...
- SkiaSharp 之 WPF 自绘 弹动小球(案例版)
没想到粉丝对界面效果这么喜欢,接下来就尽量多来点特效,当然,特效也算是动画的一部分了.WPF里面已经包含了很多动画特效的功能支持了,但是,还是得自己实现,我这边就来个自绘实现的. 弹动小球 弹动小球是 ...
- 基于LadybugFlow的微服务编排(1.SpringBoot集成)
前言 前面的系列文章里,介绍了ladybugflow的业务可视化的设计以及常见场景的使用方法. 感谢大家对项目的关注. 本篇文章介绍一下基于ladybugflow的微服务编排场景及使用方法. 1. 业 ...
- DolphinScheduler 集群高可用测试:有效分摊服务器压力,达到性能最大优化!
点击上方 蓝字关注我们 1 文档编写目的 Apache DolphinScheduler(简称DS)是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台.在生产环境中需要确保调度平台的稳定可靠 ...
- java学习第七天注解.day19
注解 可以使用注解来修饰类中的成员信息 "注解,可以看作是对 一个 类/方法 的一个扩展的模版 元注解 注解:用来贴在类/方法/变量等之上的一个标记,第三方程序可以通过这个标记赋予一定功能 ...