带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)

3.5.15.Snapshot    


创作人:冯江涛

审稿人:胡征南

 

简介

 

无论使用哪种存储数据的软件,定期备份数据都是很重要的。Elasticsearch 副本提供了高可靠性;它们让你可以容忍少量的节点丢失而不会中断服务。但是,副本并不提供对灾难性故障的保护。对这种情况,你需要的是对集群真正的备份——在某些东西确实出问题的时候有一个完整的拷贝。需要注意的是 Elasticsearch 并不支持直接拷贝集群 data 目录、备份服务器的方式来备份、升级群集,这样做会导致数据损坏、无法恢复数据。

 

Elasticsearch 提供的 Snapshot API 就是从正在运行的集群中获取备份用的,可以根据情况选择整个集群,也可以指定 index 和 data stream。Elasticsearch 是以增量的方式获取 Snapshot,节约了时间和空间,小开销意味着可以适当增加备份的频率。每一个 Snapshot 在逻辑上相互独立,所以删除某一个 Snapshot 不会影响到其他的 Snapshot。

 

从 Snapshot 恢复集群数据可以指定 index 和 data stream,当然也可以通 SLM 来管理

Snapshot 的生命周期。


备份恢复时的版本兼容性:当前版本支持当前版本及升高一个的版本进行恢复不支持跨版本直接恢复。当然如果你想跨版本恢复,可以尝试版本递增滚动升级来达到目的。反之则不可行,不能递减版本来恢复备份的数据。


image.png



配置 Snapshot 仓库

 

在使用 Snapshot 备份前,必须要注册快照仓库。可以存储在本地或者远程仓库中,远程仓库支持 Amazon S3,HDFS,Microsoft Azure,Google GCS 等,参考仓库插件的类型。

 

1.创建仓库

 

在创建仓库之前需要在所有 Master 和 Data 节点中增加仓库配置(elasticsearch.yml),下面以共享存储的方式举例。单节点的情况下可以用本地物理存储路径,如果是多节点分布式,需要保证共享存储在所有的 data 节点都进行了正确的 mount 挂载。


path:
  repo:
    - /apps/data/esbackup
    - /apps/data/stream-backup
    # Windows系统下注意路径分隔符的不同
    - D:\\apps\\data\\esbackup

如果是运行中的集群,修改配置需要等到滚动重启完所有的节点,就可以创建仓库了。建议在集群初始化时就规划好备份策略、仓库,避免中途需要滚动重启集群。


PUT /_snapshot/my_fs_backup
{
  # fs:共享文件系统;s3:亚马逊的S3仓库;azure:微软 Azure 仓库;
  # hdfs:HDFS 仓库;gcs:谷歌的 GCS 仓库。
  # "type": "url",url 支持类型:file、ftp、http、https、jar。
  # url 为只读类型,意味着只能从此类型中恢复和检索数据。
  # "type": "source",source 类型的前提是 filed 里面设置 _source
  # 为 enabled ,这样可以节约大概50%的备份空间。
  "type": "fs", 
  "settings": {
    # location 为配置文件中 path.repo 所配置的子路径,所以也可以
    # 写相对路径 "location": "My_fs_backup_location"
    "location": "/apps/data/esbackup/My_fs_backup_location",
    # 是否启用压缩,默认为 true
    "compress": "true"
  }
}
# 成功后会返回
{
    "acknowledged": true
}


创建完成后可以 GET 查询仓库。


GET /_snapshot
# 返回结果
{
    "my_fs_backup": {
        "type": "fs",
        "settings": {
            "compress": "true", 
            "location": "My_fs_backup_location"
     }
    }
}

通过 verify 验证节点仓库是否在所有节点已生效。


POST /_snapshot/my_fs_backup/_verify
# 返回结果
{
    "nodes": {
        # 节点uuid
          "8Z7MmAUeToq6WGCxhVFk8A": {
            # 节点名称
            "name": "jt-hpzbook"
        },
        "yRahNXjuR2-w6w1ObVXQjg": {
            "name": "jt-hpzbook2"
        },
    }
}


其他接口:


# 查看所有仓库
GET /_snapshot/_all
# 删除仓库
DELETE /_snapshot/my_fs_backup


2.可配置参数

 

更多参数可以参考:Repository API


l location: 仓库地址

l compress: 是否启用压缩,默认为 true

l chunk_size: 是否将文件切块,并指定文件块大小,默认:null (不切分)

l max_restore_bytes_per_sec: Snapshot 从仓库恢复时的限速,默认:无限制

l max_snapshot_bytes_per_sec: 节点创建 Snapshot 进入仓库时的限速,默认:40 mb/s

l readonly: Snapshot 是否只读,默认:false


3.插件

 

插件的扩展使得 Snapshot 可以选择更多的方式,无论是 HDFS 集群还是常见的云厂商的云端仓库。

 

l 官方插件:

S3 Repository: 亚马逊的 S3 仓库

Azure Repository: 微软 Azure 仓库

HDFS Repository: HDFS 仓库

Google Cloud Storage Repository: 谷歌的 GCS 仓库

 

l 社区插件:

Openstack Swift 


《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.15.Snapshot (中) https://developer.aliyun.com/article/1228107


 

 

 

 

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
索引
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (中)
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (中)
125 0
|
存储 分布式计算 监控
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (下)
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (下)
157 0
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
108 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
119 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
347 0
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
272 0
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
139 0
|
机器学习/深度学习 数据建模 索引
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
105 0
|
机器学习/深度学习 运维 数据可视化
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
106 0
|
机器学习/深度学习
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)