Elasticsearch-5.6.0使用repository-hdfs快照(备份)数据到hdfs并恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch-5.6.0使用repository-hdfs快照(备份)数据到hdfs并恢复相关的知识,希望对你有一定的参考价值。

参考技术A Elasticsearch的副本机制提供了可靠性,可以容忍个别节点丢失而不影响集群的对外服务,但是并不能提供对灾难性故障的保护,所以需要对ES集群数据做一个完整的备份,以便在灾难性故障发生时,能快速恢复数据。ES官方提供了快照/恢复(Snapshot/Restore)的方式,支持的插件包括Azure Repository Plugin、S3 Repository Plugin、Hadoop HDFS Repository Plugin、Google Cloud Storage Respository Plugin,这里我使用Hadoop HDFS Repository插件,将ES中的数据备份到HDFS上。

本文基于Elasticsearch-5.6.0、hadoop-2.6.0-cdh5.7.0,使用的插件及版本是repository-hdfs-5.6.0.zip,官网地址:
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-snapshots.html
https://www.elastic.co/guide/en/elasticsearch/plugins/5.6/repository-hdfs.html
ES集群快照存在版本兼容性问题,请注意:
A snapshot of an index created in 5.x can be restored to 6.x.
A snapshot of an index created in 2.x can be restored to 5.x.
A snapshot of an index created in 1.x can be restored to 2.x.
我的情况是从5.6.0备份数据然后恢复到6.3.2,不存在这种兼容性问题。

分别在集群的各个节点安装repository-hdfs插件
在线安装:sudo bin/elasticsearch-plugin install repository-hdfs
离线安装:
先wget https://artifacts.elastic.co/downloads/elasticsearch-plugins/repository-hdfs/repository-hdfs-5.6.0.zip
然后bin/elasticsearch-plugin install file:///data/elastic/repository-hdfs-5.6.0.zip

创建过程中遇到Permission denied的问题,我暂时关闭了hdfs权限,即修改hadoop各节点hdfs-site.xml,添加如下配置:

然后重启hdfs,再次执行上述创建仓库命令即可成功创建,查看hdfs目录如下:

可以通过如下命令查看仓库:
curl -X GET "172.16.221.104:9400/_snapshot/es_hdfs_repository"
返回结果如下:

为所有索引创建快照:

通常你会希望你的快照作为后台进程运行,不过有时候你会希望在你的脚本中一直等待到完成。这可以通过添加一个 wait_for_completion 标记实现:wait_for_completion=true,这个会阻塞调用直到快照完成。注意大型快照会花很长时间才返回。
https://www.elastic.co/guide/cn/elasticsearch/guide/current/backing-up-your-cluster.html

curl -X POST "172.16.221.105:9400/_snapshot/es_hdfs_repository/snapshot_1/_restore"
和快照类似, restore 命令也会立刻返回,恢复进程会在后台进行。如果你更希望你的 HTTP 调用阻塞直到恢复完成,添加 wait_for_completion 标记:

我恢复的时候是恢复到一个新的集群(6.3.2的一个集群),因为没有在es注册HDFS仓库的位置,报错说找不到仓库,于是又通过创建仓库的命令注册了一下,再执行恢复命令就好了,这一点官方是这么说的:

英文文档: https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-snapshots.html
中文文档: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_restoring_from_a_snapshot.html

获取一个仓库中所有快照的完整列表,使用 _all 占位符替换掉具体的快照名称:
curl -X GET "172.16.221.105:9400/_snapshot/es_hdfs_repository/_all"
获取一个快照的详细信息:
curl -X GET "172.16.221.105:9400/_snapshot/es_hdfs_repository/snapshot_2"
获取一个快照更详细的信息:
curl -X GET "172.16.221.105:9400/_snapshot/es_hdfs_repository/snapshot_2/_status"
官方文档:
https://www.elastic.co/guide/cn/elasticsearch/guide/current/backing-up-your-cluster.html
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/modules-snapshots.html

以下是我当时备份/恢复数据用到的相关命令:

以上是关于Elasticsearch-5.6.0使用repository-hdfs快照(备份)数据到hdfs并恢复的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch-安装-1

centos7虚拟机安装elasticsearch6.4.x-遇到的坑

centos7下部署elasticSearch集群

ELK套件之 X-pack 工具的安装

Elasticsearch 写入优化记录,从3000到8000/s

Elasticsearch 写入优化,从 3000 到 8000/s,让你的 ES 飞起来。。。