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

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


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


Snapshot 快照备份


1.创建 Snapshot

 

一个仓库可以包含多个 Snapshot,一个 Snapshot 在集群中的名字是唯一的。Snapshot 快照备份的内容仅包含截止快照开始时间之前的数据,快照之后的数据需要通过不断的增量

Snapshot 来捕获。通过 PUT 请求创建一个 Snapshot,默认备份集群所有可读索引、流,如果需要部分备份则可以通过传参来指定。


# wait_for_completion 参数表示是否要同步等 Snapshot 创建完成再返回
# PUT 请求如果传参为空则默认备份所有可读索引、流
# my_fs_backup:指定(已创建的)仓库名称
# snapshot_1:指定快照名称
PUT /_snapshot/my_fs_backup/snapshot_1?wait_for_completion=true
{
  # indices:指定要进行快照备份的索引、流
  "indices": "hundredsman,index_1,index_2",
  # ignore_unavailable:忽略不可用的索引和流
  "ignore_unavailable": true, 
  # include_global_state:是否保存集群全局状态
  "include_global_state": false,
  # metadata:元数据,一些注释性的数据。
  "metadata": {
    "taken_by": "james",
    "taken_because": "Hundreds man fighting for book backup."
  }
}
# 返回结果
{
    "snapshot": {
        "snapshot": "snapshot_1",
        "uuid": "HQHFSpPoQ1aY4ykm2o-a0Q",
        "version_id": 7100099,
        "version": "7.10.0",
        # Snapshot 备份的索引
        "indices": [
            "index_1",
            "index_2",
            "hundredsman"
        ],
        "data_streams": [],
        # 是否保存集群全局状态
        "include_global_state": true,
        # 当前快照状态
          "state": "SUCCESS",
        "start_time": "2021-09-03T12:46:56.237Z",
        "start_time_in_millis": 1630673216237,
        "end_time": "2021-09-03T12:46:56.237Z",
        "end_time_in_millis": 1630673216237,
        "duration_in_millis": 0,
        # 备份失败的索引和流
        "failures": [],
        # 分片状态
        "shards": {
            "total": 3,
            "failed": 0,
            "successful": 3
        }
    }
}

2.删除 Snapshot

 

删除 Snapshot 需要发送 DELETE 请求:


DELETE /_snapshot/my_fs_backup/snapshot_1
# 删除多个可以用逗号分隔或者通配符
DELETE /_snapshot/my_fs_backup/snapshot_2,snapshot_3
DELETE /_snapshot/my_fs_backup/snap*

 如果 Snapshot 正在创建过程中,Elasticsearch 也会终止任务并删除所有 Snapshot 相关的数据。但要注意不能手动删除仓库里的备份数据,这样会有数据损坏的风险。

Restore恢复

 

发送 POST 请求从 Snapshot 恢复数据:


# 不带参数的请求默认恢复所有 Snapshot 中的索引、流
POST /_snapshot/my_fs_backup/snapshot_1/_restore
# 如果需要恢复特定的索引、流,可以在 POST 参数中指定
POST /_snapshot/my_fs_backup/snapshot_1/_restore
{
  "indices": "index*",
  "ignore_unavailable": true,
  # include_global_state默认为 true,是否保存集群全局状态
  "include_global_state": false, 
  # 重命名索引匹配规则,如:index_1
  "rename_pattern": "index_(.+)",
  # 重命名索引为新的规则,如:re_index_1
  "rename_replacement": "re_index_$1",
  # 是否包含别名
  "include_aliases": false
}
# 正常返回结果
{
    "accepted": true
}
# 如果索引已经存在,会提示已经有同名索引存在,需要重命名。
{
    "error": {
        "root_cause": [
            {   # Exception 类型
                "type": "snapshot_restore_exception",
                # 发生错误原因详情
                "reason": "[my_fs_backup:snapshot_1/90A9o4hORUCv732HTQBfRQ] \
                  cannot restore index [index_1] 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"
            }
        ]
    },
    "status": 500
}

需要注意的是如果没有匹配到 Stream 流的模板,Stream 流是不能滚动创建的。所以如果有快照中包含有 Stream 流数据,要记得提前创建模板。

 

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

相关实践学习
使用阿里云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 (下)
166 0
|
存储 API
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)
带你读《Elastic Stack 实战手册》之56:——3.5.15.Snapshot (上)
157 0
|
SQL 自然语言处理 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
带你读《Elastic Stack 实战手册》之2:——二、导读(上)
352 0
|
存储 运维 监控
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
带你读《Elastic Stack 实战手册》之2:——二、导读(下)
278 0
|
JSON Java 数据格式
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(下)
116 0
|
自然语言处理 索引
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
带你读《Elastic Stack 实战手册》之33:——3.4.2.17.2.Schemaless(上)
126 0
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
带你读《Elastic Stack 实战手册》之38:——3.4.2.19.copy_to
148 0
|
机器学习/深度学习
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(下)
|
机器学习/深度学习 数据建模 索引
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(中)
108 0
|
机器学习/深度学习 运维 数据可视化
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
带你读《Elastic Stack 实战手册》之58:——3.5.16.2.Getting started(上)
109 0