ElasticSearch基于snapshot和华为云OBS的备份

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ElasticSearch基于snapshot和华为云OBS的备份

0 背景


任何一个存储数据的软件,都需要定期的备份数据。es replica提供了运行时的高可用保障机制,可以容忍少数节点的故障和部分数据的丢失,但是整体上却不会丢失任何数据,而且不会影响集群运行。但是replica没法进行灾难性的数据保护,比如说机房彻底停电,所有机器全部宕机,等等情况。对于这种灾难性的故障,我们就需要对集群中的数据进行备份了,集群中数据的完整备份。


Elasticsearch提供了replica解决方案,它可以帮我们解决了如果有一个或多个node失败了,那么我们的数据还是可以保证完整的情况,并且搜索还可以继续进行。但是,有一种情况是我们的所有的node,或者有一部分node失败,可能会造成我们的数据的丢失。也就是说replca不能提供一种灾难性的保护机制。我们需要一种完整的备份机制。


640.png


Snapshot及Restore


在Elastic里,我们提供了一个叫做snapshot及restore API的接口。使您可以使用数据和状态快照备份您的Elasticsearch索引和集群。快照很重要,因为快照会在出现问题时提供您数据的副本。如果需要回滚到旧版本的数据,则可以从存储库中还原快照。


640.png


如上图所示,我们可以把当前index的状态及数据存入到一个repository里去。


Elasticsearch 的 snapshot 是由其自身控制的,整个系统保持了一个如下的从下到上的控制结构,他们具备包含关系:


snapshot --> repository --> single snapshot --> indices


repository


为了能够做备份,我们首先必须创建一个repository,也就是一个仓库。你可以为一个cluster创建多个仓库。目前支持的仓库类型有:这个仓库应该是一组 snapshot 备份的集合,也可以认为是一个目标的选择。在一个 Elasticsearch 系统中你可以根据自己的意愿设定不同的 Repository。


Elasticsearch支持仓库类型


Respository 配置类型
Shared file system "type": "fs"
Read-only URL "type": "url"
S3 "type": "s3"
HDFS "type": "hdfs"
Azure "type": "azure"
Google Cloud Storage "type": "gcs"


这里需要注意的是:S3, HDFS, Azure and GCS 需要相应的插件进行安装才可以。


Single snapshot


这个指的是在 Repository 中我们进行的每个备份内容,他更像一个集合,包含了这次 snapshot 中所有的 Indices。


Indices


在一个 snapshot 当中,可以包含多个 Indices 文件内容。他可以在执行 snapshot 的时候用 pattern 识别,也可以一个一个的指定。


S3 插件


如果要想让 Elasticsearch 备份到 S3 当中需要单独安装一个插件 S3 Repository Plugin。


1  ES集群中插件安装和配置修改


1.1 自建ES集群下载repository-s3插件


首先先要在es插件目录安装repository-s3的插件,必须在每个节点上都安装。


./bin/elasticsearch-plugin install repository-s3


1.2  修改elasticsearch的jvm.options


集群所有服务器节点都要操作,在配置文件最后添加如下内容


-Des.allow_insecure_settings=true


1.3  验证插件


重启各节点上的elasticsearch服务,然后在浏览器中输入http://esip地址/_cat/plugins,马上能看到所有节点安装的插件,则表示安装成功


640.png

3、创建华为云OBS


elastic官网文档,主要是介绍的对AWS上的S3如果配置进行说明,实际上如果公司没有使用AWS的话,还是不太适用的,这里主要是以国产云平台华为云上的对象存储OBS为例,大家可以根据自己公司的业务情况进行选择腾讯云COS、阿里云OOS;只需要我们的Repository类型使用的是s3就行


640.png


3.1 创建es备份使用的桶,并获取访问密钥

640.png


640.png


3.2 设置OBS为快照仓库


可以在kibana中使用dev_tools来调用API进行操作,如下所示,创建了一个仓库名为es_s3_repository,其中bucket是刚才创建的桶,access_key,secret_key,endpoint根据实际情况填写,compress为true表示为会对数据进行压缩


PUT _snapshot/es_s3_repository
{
  "type": "s3",
  "settings": {
    "access_key": "xxxxxxxxxxxxxxx",
    "secret_key": "xxxxxxxxxxxxxxxxx",
    "bucket": "es-centre",
    "endpoint":"xxxxxxxxxxxx",
    "compress":"true"
  }
}


执行之后返回为true,则为创建成功,如果返回其他错误,可能需要检查一下插件是否安装和jvm.options是否设置,集群重启成功


# 查看所有的仓库
GET /_snapshot/_all


返回结果


{
  "es_s3_repository" : {
    "type" : "s3",
    "settings" : {
      "bucket" : "es-centre",
      "compress" : "true",
      "endpoint" : "obs.cn-north-2.myhuaweicloud.com"
    }
  }
}


如果所示则为创建成功


3.2 创建快照测试(快照名index_bak)


数据量太大会出问题,只能一个索引一个索引的做快照,如下为创建一个快照名为index_bak的快照,主要对index1,index2,两个索引进行创建快照


PUT /_snapshot/es_s3_repository/index_bak?wait_for_completion=true
{
  "indices": "index1,index2",
  "ignore_unavailable": true,
  "include_global_state": false,
  "metadata": {
    "taken_by": "kimchy",
    "taken_because": "backup before upgrading"
  }
}


常用的API命令


# 查看所有的仓库
GET /_snapshot/_all
# 查看某一个具体的仓库的快照情况
GET /_snapshot/es_s3_repository/_all?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/_status?pretty
# 列出所有当前正在运行的快照以及显示他们的详细状态信息
GET /_snapshot/es_s3_repository/_status?pretty
# 查看指定快照的详细状态信息即使不是正在运行
GET /_snapshot/es_s3_repository/snapshot_2/_status?pretty
#删除某一个快照
DELETE /_snapshot/es_s3_repository/snapshot_2


3.3 在kibana上添加快照策略


这种创建方式,是对es上所有的所有的索引都会创建快照,这里需要注意,如果是有特殊需求可以调用API来进行创建


640.png


创建策略基本信息,这里的策略名称可以自己修改,快照名称名称,是表示一天创建一个快照,命名为snapshot加日期,频率设置为天,计划就是定时任务,这里的设置,实际上会+8h,表示为每天的凌晨00点10分进行前一天的索引快照备份


640.png


3.4 OBS上查看数据是否上传


640.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
8月前
|
存储 Java API
如何在Spring Boot应用程序中使用华为云的OBS云存储来上传和删除图片?
如何在Spring Boot应用程序中使用华为云的OBS云存储来上传和删除图片?
225 1
|
弹性计算 JavaScript Linux
ElasticSearch备份与恢复-elasticdump工具
ElasticSearch备份与恢复-elasticdump工具
|
存储 弹性计算 容灾
华为云从入门到实战 | 云关系数据库备份、恢复及存储容灾服务
主要介绍华为云数据库RDS的备份与恢复部署过程以及SDRS的创建部署过程。
461 0
华为云从入门到实战 | 云关系数据库备份、恢复及存储容灾服务
|
2月前
|
存储 API
Elasticsearch快照备份与恢复 - 蓝易云
以上步骤可以帮助你在Elasticsearch中实现快照备份和恢复。注意,这些操作可能需要特定的权限和配置,所以在进行操作前,确保你具备足够的权限并已正确配置Elasticsearch。
36 0
|
11月前
|
存储 索引
elasticsearch6.x 数据的备份
elasticsearch6.x 数据的备份
76 0
|
存储 运维 监控
大数据数据存储的搜索引擎Elasticsearch的集群运维的集群备份
Elasticsearch是一个可扩展的搜索引擎,可以在同一个集群中部署多个Elasticsearch节点,以提高性能和可用性。
70 0
|
存储 分布式计算 资源调度
白话Elasticsearch72_利用HDFS备份与恢复ES生产集群的数据
白话Elasticsearch72_利用HDFS备份与恢复ES生产集群的数据
211 0
|
Java API Maven
华为云的obs之自定义springboot-starter
华为云的obs之自定义springboot-starter
458 0
|
存储 运维 Kubernetes
Elasticsearch8.2 使用snapshot备份能力
Elasticsearch8版本相较于之前版本参数和使用层面有了较多改动,但基本使用方式是一致的; 本文将介绍ES8版本如何在云环境中设计snapshot备份存储方案;
596 0
Elasticsearch8.2 使用snapshot备份能力
|
2月前
|
存储 NoSQL Redis
Redis+SpringBoot企业版集群实战------【华为云版】(上)
Redis+SpringBoot企业版集群实战------【华为云版】
84 0