如何备份ElasticSearch索引数据到HDFS上

在ElasticSearch里面备份策略已经比较成熟了

目前在ES5.x中备份支持的存储方式有如下几种:

fs         //本地挂载的盘
url        //网络协议存储支持http,https,ftp
repository-s3   //亚马逊
repository-hdfs  //HDFS
repository-azure  //微软
repository-gcs   //google

在这里我们主要介绍如何备份索引数据到HDFS上。

首先,我们先从名词概念上理解下备份相关术语:

(1)Repositories (仓库)

在一个es集群内,想要备份数据,首先要创建一个仓库,用来存储快照,一个集群可以创建多个仓库。

(2)Snapshot (快照)

有了仓库之后,我们就可以创建快照了,创建快照时,必须要选择一个指定的仓库才能创建。每个快照里面可以包含多个索引,默认的话是备份整个集群的索引。当然我们也可以指定备份我们认为重要的索引的数据。

(3)Restore (恢复)

备份完成之后数据也就是快照的还原称为恢复

ok,理解了上面三个概念之后,下面我们看下具体怎么操作,本次主要介绍 主要涉及两个ES版本:

ElasticSearch2.3.4

ElasticSearch5.6.4

(一)在ElasticSearch2.x中如何备份索引数据

(1)在每台节点上安装repository-hdfs插件

bin/plugin install elasticsearch/elasticsearch-repository-hdfs/2.2.0

(2)修改每台节点上的config/elasticsearch.yml文件,添加下面的属性

security.manager.enabled: false

(3)重启整个集群

(4)构建一个仓库

PUT /_snapshot/my_backup
{
  "type": "hdfs",
  "settings": {
         "path": "/back/es/",
         "load_defaults": "true",
         "compress": "true",
         "uri": "hdfs://192.168.10.160:8020"
  }
}

查看仓库信息:

//查看指定的仓库
GET /_snapshot/my_backup  

//下面当前所有的仓库信息s
GET /_snapshot
GET /_snapshot/_all

删除一个仓库:

DELETE /_snapshot/my_backup

注意删除之后,只是ES里面的引用删除,HDFS上备份的文件是不会删除的

(5)构建一个快照

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true
{
  "indices": "index_1,index_2",//注意不设置这个属性,默认是备份所有
  "ignore_unavailable": true,
  "include_global_state": false
}

查询快照的几个方式:

GET /_snapshot/my_backup/snapshot_1 //查询指定快照
GET /_snapshot/my_backup/snapshot_*,some_other_snapshot //支持通配符查询
GET /_snapshot/my_backup/_all //查询所有的快照

删除一个快照:

DELETE /_snapshot/my_backup/snapshot_1

注意删除之后,只是ES里面的引用删除,HDFS上备份的文件是不会删除的

(6)恢复快照

POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index_1,index_2", //指定索引恢复,不指定就是所有
  "ignore_unavailable": true,//忽略恢复时异常索引
  "include_global_state": false,//是否存储全局转态信息,fasle代表有一个或几个失败,不会导致整个任务失败
  "rename_pattern": "index_(.+)",//是否需要重命名索引
  "rename_replacement": "restored_index_$1"//替换后的索引名
}

(二)在ElasticSearch5.x中如何备份索引数据

ElasticSearch5.x的备份方法和ElasticSearch2.x大同小异,这里仅介绍他们不同的地方。

首先es5要求必须是JDK8的版本,如果你的系统有多个jdk的版本,而且你不想改变现有的jdk版本,那么你就要,单独在下面的两个脚本中声明JDK:

vi bin/elasticsearch
vi  bin/elasticsearch-plugin

里面分别添加下面的jdk指定版本:

export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH

然后在每台节点上安装备份的插件:

bin/elasticsearch-plugin install repository-hdfs

完事之后,直接重启集群即可,注意ElasticSearch5.x不需要再修改elasticsearch.yml文件。

用法和Elasticsearch2.x是一样的,这里不再重述。

最后再补充一下:

es1.x的备份的索引是可以直接在es2.x中恢复的

es2.x的备份的索引是可以直接在es5.x中恢复的

但是,es1.x的的索引数据是不能直接在es5.x中使用的。

兼容的索引只能跨一个主要版本

总结:

本文主要介绍了在Elasticsearch2.x和5.x的版本中,如何给索引数据备份及恢复,并叙述了2.x和5.x版本他们的不同之处,数据备份是生产环境非常重要的一个环节,有了备份我们才可以更加从容的面对一些突发的线上故障。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实施ELK的索引归档备份,可以按照以下步骤进行: 1. 确定归档策略:首先,确定哪些索引需要进行归档。通常,不再活跃或需要长期保留的索引是候选对象。考虑数据的重要性、访问频率和合规性要求,制定一个合适的归档策略。 2. 配置远程存储:选择一个适合的远程存储介质来存储归档数据,如Amazon S3或Hadoop HDFS。配置和设置远程存储,确保ELK集群能够与其进行通信和交互。 3. 创建索引归档作业:使用工具如Curator、Elasticsearch Curator或自定义脚本,创建一个定期运行的作业来归档索引。该作业应该包括以下步骤: - 关闭或冻结要归档的索引,以停止数据写入。 - 创建一个新的归档索引,并将要归档的数据从原始索引中导入到归档索引中。 - 确认数据已成功导入到归档索引后,可以删除或清理原始索引,以释放存储空间。 4. 配置索引恢复:为了方便后续访问和检索,确保配置适当的索引恢复机制。这可以包括在需要时从归档中还原索引,并重新打开或解冻索引以进行读取操作。 5. 测试和验证:在实际生产环境中,测试和验证归档备份策略的完整性和可靠性。验证归档数据的完整性、可用性和可恢复性,以确保备份过程正常运行。 需要注意的是,ELK的索引归档备份需要根据具体需求进行定制。根据数据量、保留期限和访问模式等因素,可以灵活调整归档策略和归档作业的设置。同时,监控和记录归档过程的日志和指标,以便进行故障排查和性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值