首页 > 其他分享 >干货 | Elasitcsearch7.X集群、索引备份与恢复实战

干货 | Elasitcsearch7.X集群、索引备份与恢复实战

时间:2022-10-18 22:05:48浏览次数:55  
标签:index 快照 备份 Elasitcsearch7 索引 干货 集群 snapshot my


Elasticsearch 最少必要知识实战教程直播回放

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集群、索引备份与恢复实战_快照


标签:index,快照,备份,Elasitcsearch7,索引,干货,集群,snapshot,my
From: https://blog.51cto.com/elasticsearch/5768234

相关文章

  • 干货 | Elasticsearch基础但非常有用的功能之二:模板
    Elasticsearch最少必要知识实战教程直播回放1、引言业务场景1:数据量非常大,需要进行索引生命周期管理,按日期划分索引,要求多个索引的Mapping一致,每次手动创建或者脚本创......
  • 干货 | Elasticsearch 索引设计实战指南
    题记随着Elastic的上市,ELKStack不仅在BAT的大公司得到长足的发展,而且在各个中小公司都得到非常广泛的应用,甚至连“婚庆网站”都开始使用Elasticsearch了。随之而来......
  • 干货 | Elasticsearch开发人员最佳实战指南
    Elasticsearch最少必要知识实战教程直播回放题记几个月以来,我一直在记录自己开发Elasticsearch应用程序的最佳实践。本文梳理的内容试图传达Java的某些思想,我相信其同样......
  • #yyds干货盘点#前端优化之压缩
    前端文件的压缩主要是资源图片以及js和css压缩,今天分享一下vue项目中的文件压缩方法。压缩js和css如果你使用的是webpackv5或更高版本,是开箱机带的功能,但是你的webpack是......
  • 干货 | Elasticsearch 运维实战常用命令清单
    Elasticsearch最少必要知识实战教程直播回放背景球友反馈的实战问题:关于es的运维相关的,遇到一些问题!第一个问题:是关于集群迁移的,目前需要针对20亿的数据做迁移,如果文......
  • 《一年顶十年》干货读书笔记
    作者彪悍一只猫是范登读书首席社群顾问,一天的咨询费20万元。书非常薄,一共170+篇文章,每篇都很短,我花了2个多小时就读完了。以下的作者观点,非常有共鸣。摘抄下来,和大家共勉,一......
  • 干货 | Elasticsearch 开发实战常用命令清单
    Elasticsearch最少必要知识实战教程直播回放0、背景Elasticsearch具有一组丰富的易于理解的RESTAPI,这些API 均可如下几种方式通过HTTP调用进行访问。CurlPostma......
  • MySQL备份与恢复
    MySQL备份与恢复......
  • #yyds干货盘点# 面试必刷TOP101:最小覆盖子串
    1.简述:描述给出两个字符串s 和t,要求在s 中找出最短的包含t 中所有字符的连续子串。数据范围:,保证s和t字符串中仅包含大小写英文字母要求:进阶:空间复杂度  ,时间复杂......
  • #yyds干货盘点# 面试必刷TOP101:反转字符串
    1.简述:描述写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)数据范围: 要求:空间复杂度 ,时间复杂度 示例1输入:"abcd"返回值:"dcba"示例2输......