基于BOS的快照与恢复

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
所有文档
menu
没有找到结果,请重新输入

Elasticsearch BES

  • 邀测版存储计算分离套餐介绍
  • 功能发布记录
  • 产品描述
    • 基本概念
    • 关键特性
    • 产品介绍
    • 产品性能
      • 4核16GB512GB通用型的3个数据节点实例基准性能指标
      • 8核16GB512GB计算型的3个数据节点实例基准性能测试
      • 16核32GB512GB计算型的3个数据节点实例基准性能指标
      • 4核8GB512GB计算型的3个数据节点实例基准性能测试
      • 8核32GB512GB通用型的3个数据节点实例基准性能指标
      • 16核64GB512GB通用型的3个数据节点实例基准性能指标
      • 概述
  • Python-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • Kibana
    • Kibana使用指南
  • Logstash
    • Logstash使用指南
    • 实例管理
      • 实例详情信息
      • 实例扩缩容
      • 管道管理
      • 创建实例
      • 实例列表
      • 删除实例
  • 开发指南
    • Elasticsearch Restful API
    • 通过其他客户端访问Elasticsearch
    • Elasticsearch Java客户端
      • Low Level REST Client
      • Rest Client操作向量索引示例
      • Java REST Client
      • High Level REST Client
  • Java-SDK
    • 实例
    • 异常
    • 日志
    • 节点配置类型
    • 版本更新记录
    • 快速入门
    • 集群
    • BesClient
    • 安装SDK工具包
    • 概述
  • 向量检索特性
    • 资源规划
    • 关键概念
    • 应用场景
    • 快速入门
    • 算法介绍
    • 能力简介
    • 向量数据库
    • 操作指南
      • 写入和查询数据
      • 训练模型
      • 向量索引缓存管理
      • 创建索引
      • 基于Reciprocal Rank Fusion的融合查询
      • 参数优化
      • 7.4版本兼容说明
    • 最佳实践
      • 调优建议
      • BES RAG 最佳实践:基于LangChain+BES的私域知识的QA问答系统
    • 迁移方案
      • ES dense vector 切换为BES方案
  • ELK
    • 基于ELK构建日志分析系统
  • 增强特性
    • 慢查询隔离
    • 百度NLP中文分词词典动态更新
    • 百度NLP中文分词插件
    • 基于段文件的主从复制
    • 基于BOS的冷热数据分离
  • 快速入门
    • 访问Elasticsearch服务
    • 导入数据并搜索
    • 创建集群
    • 集群资源评估
  • 典型实践
    • 使用BSC将BOS中的数据导入Es
    • 使用BSC将Kafka中的数据导入Es
    • 基于CCR实现多集群跨地域高可用
    • 基于节点磁盘介质的冷热数据分离
  • 服务等级协议SLA
    • 数据迁移服务协议
    • BES服务等级协议SLA(V1.0)
  • 常见问题
    • Spark访问Es常见问题
    • Elasticsearch系统常见问题
    • 常见问题总览
  • 产品定价
    • 预付费
    • 计费说明
    • 配置变更费用说明
    • 后付费
  • API文档
    • 概述
    • 自动续费相关接口
      • 续费列表
      • 查看自动续费
      • 查看自动续费规则列表
      • 续费操作
      • 更新自动续费规则
      • 删除自动续费规则
      • 创建自动续费规则
    • 插件配置接口
      • 上传自定义插件
      • 卸载系统默认插件
      • 上传nlp词典
      • 安装系统默认插件
      • 获取默认和自定义插件列表
      • 卸载自定义插件
      • 安装自定义插件
      • 删除自定义插件
      • 查看nlp词典
    • 日志管理相关接口
      • 查看日志导出任务记录
      • 创建日志导出任务
      • 日志设置
      • 日志查询
    • 标签接口
      • 查询标签列表
      • 批量新增标签
      • 单个集群更新标签
    • 智能巡检接口
      • 查看近7天已完成的巡检任务列表
      • 近七天巡检概况
      • 查看手动巡检任务的配置
      • 集群巡检授权
      • 列举所有可选巡检项
      • 查询是否可以提交巡检任务
      • 最新一次巡检概况
      • 查看集群是否开启自动巡检
      • 修改手动巡检任务的配置
      • 开启或关闭自动巡检
      • 提交手动巡检任务
      • 查询今日已执行完成的手动巡检次数
      • 查看某巡检任务的执行状态和结果
    • 集群相关接口
      • 获取操作历史信息
      • 删除集群
      • 新增节点类型
      • 开启和关闭https
      • 查看集群详情信息
      • 重置密码
      • EIP绑定
      • EIP解绑
      • 是否开启Grafana监控
      • 获取数据量观测数据
      • 查看集群列表
      • 上传NLP分词词典
      • 创建集群
      • 智能评估
      • 集群blb信息
      • 用户可用代金券列表
      • 停止集群
      • 扩容集群
      • 启动集群
      • 重启集群
    • 实例相关接口
      • 批量停止实例
      • 启动实例
      • 查看缩容节点列表
      • 数据迁移
      • 数据迁移系统建议
      • 批量启动实例
      • 数据迁移回滚
      • 停止实例
      • 数据迁移节点列表
      • 删除实例
    • 配置修改相关接口
      • 获取同义词文件列表
      • 查看集群配置
      • 删除同义词配置文件
      • 上传同义词配置文件
      • 配置修改
    • 定时调度
      • 更新定时调度任务
      • 删除定时调度任务
      • 创建和更新定时调度任务
      • 查看定时调度任务
  • API3.0
    • 集群相关接口
      • 删除集群
  • Elasticsearch
    • 用户手册
      • YML参数配置
      • 权限管理
      • 智能巡检
      • 数据迁移
      • 基于BOS的快照与恢复
      • 集群列表
      • 账号使用说明
      • 多可用区部署
      • 定时调度
      • 数据量观测
      • 日志查询
        • 日志查询(旧)
        • 日志查询(新)
        • 日志导出
        • 查询语法
      • 集群配置
        • 配置同义词
      • 插件管理
        • 上传与安装自定义插件
        • Elasticsearch插件列表
        • 系统默认插件
          • analysis-pinyin拼音分词插件
          • IK中文分词插件与动态更新词典
          • compression-zstd插件
          • CCR插件
          • 限流插件
          • 动态同义词插件
          • 简繁体转换插件
          • ingest attachment插件
          • SQL插件
      • 配置变更
        • 节点数据迁移
        • 集群变配说明与建议
        • 集群扩缩容
      • 版本升级
        • 升级版本
        • 内核版本说明
        • 升级检查
      • 集群监控报警
        • 监控查看及指标说明
        • 配置报警
      • 集群管理
        • 集群重启
        • 变更HTTPS协议用户指南
        • 节点启停
        • 查看集群信息
        • 集群创建
        • 公网绑定
        • 修改集群名称
        • 跨可用区迁移集群
        • 集群删除
        • 集群列表
        • 自动续费
        • 密码重置
        • ES服务区域代码
      • 账户管理
        • 多用户访问控制
  • 文档中心
  • arrow
  • ElasticsearchBES
  • arrow
  • Elasticsearch
  • arrow
  • 用户手册
  • arrow
  • 基于BOS的快照与恢复
本页目录
  • 创建快照
  • 创建基于BOS的仓库
  • 列出所有仓库信息
  • 快照(snpashot)
  • 查询快照
  • 停止或删除快照
  • 查看快照进度
  • 恢复快照
  • 监控快照的恢复
  • 取消正在进行的恢复
  • 快照需要注意
  • 恢复需要注意

基于BOS的快照与恢复

更新时间:2025-08-20

介绍如何用百度智能云Elasticsearch创建快照与恢复,如何将您的数据快照至百度对象存储BOS(Baidu Object Storage)中。快照和备份的概念基本上是一致的,快照更强调point-in-time即强调某一时刻。

注意:目前基于BOS的快照功能支持所有版本的Elasticsearch实例。

创建快照

主要包括两个步骤

  • 创建基于BOS的仓库
  • 创建数据的快照(手动触发或者定时调度)

创建基于BOS的仓库

  • 创建仓库前的准备,需要在您的BOS中创建相应的bucket,并保证创建快照的用户具有相应的权限,这里的用户是用百度智能云的access_key、secrect_key来标识的,bucket的存储类型目前仅支持标准存储和低频存储(暂不支持多AZ的存储类型),您可以根据需求选择,推荐选用标准存储
  • BOS对应的bucket您应该保证和您的Elasticsearch集群在同一个region中
  • es_repo为您设置的仓库名字,您可以根据您自己的业务需求起不同的名字
Plain Text
1PUT /_snapshot/es_repo
2{
3    "type": "bos",
4    "settings": {
5        "access_key": "your access_key",
6        "secret_key": "your secret_key",
7        "endpoint": "s3.bj.bcebos.com",
8        "bucket": "es-repo",
9        "base_path": ""
10    }
11}

相关参数意义:

参数 作用
type 仓库的类型,在这里您应该填bos
access_key 百度智能云的access_key,可以在百度智能云的console中看到
secret_key 百度智能云的secret_key,可以在百度智能云的console中看到
endpoint BOS对应各个region的服务域名
bucket BOS的bucket,务必保证ak/sk对应的用户身份有读写bucket权限
base_path 仓库的起始位置,默认为根目录;开始使用后不要修改,会导致快照查询异常
chunk_size 大文件将会被拆分成多个part,默认1G,最小5M,最大5T
max_snapshot_bytes_per_sec 每个节点快照的最大速度,默认40mb/s
max_restore_bytes_per_sec 每个节点恢复的最大速度,默认40mb/s

BOS对应各个region的服务域名

区域 访问Endpoint
BJ s3.bj.bcebos.com
BD s3.bd.bcebos.com
GZ s3.gz.bcebos.com
SU s3.su.bcebos.com

创建完仓库后,您如果需要修改对应的参数,使用POST方法,假如我们上传的数据非常大,我们可以限制snapshot过程中分块的大小,超过这个大小,数据将会被分块上传到BOS中。

Plain Text
1POST /_snapshot/es_repo
2{
3    "type": "bos",
4    "settings": {
5        "access_key": "your access_key",
6        "secret_key": "your secret_key",
7        "endpoint": "s3.bj.bcebos.com",
8        "bucket": "es-repo",
9        "chunk_size": "1g",
10        "base_path": ""
11    }
12}

列出所有仓库信息

Plain Text
1GET /_snapshot

查看具体仓库的信息

Plain Text
1GET /_snapshot/{您设置的仓库名}

快照(snpashot)

一个仓库可以包含多个快照,每个快照都是一系列索引的集合,可以是单个索引,一部分索引,所有索引。当创建快照的时候,您可以指定您需要快照的索引,再不指定的情况下将快照集群所有打开着的索引,您需要给快照取一个唯一的名字,这个名字最好有一定的意义如snapshot_2018_07_01表示2018年7月1日的一个快照,这样您恢复的时候可以根据您对数据的要求进行恢复。

发起一次快照:

Plain Text
1PUT /_snapshot/es_repo/snapshot_2018_07_01?wait_for_completion=false

这个请求会将集群中所有打开的索引快照到es_repo仓库下,并将这次快照命名为`snapshot_2018_07_01`,这个请求将会在snapshot初始化完成后会立即返回,快照过程将在您的集群后台运行。

wait_for_completion参数用来告诉请求是否在snapshot初始化完成后或snapshot完成后返回,默认为false即snpashot初始化完成后即返回;设置为true则是在完成备份快照后才会返回结果,这可能需要很长时间,一般不建议设置为true。

在snapshot初始化的时候,关于之前所有的snapshots的信息都会被加载到内存中,这就意味着即使wait_for_completion设置为false,面对非常大的仓库可能需要花费数秒更甚至数分钟。

默认情况下,集群中所有打开的(open)和开始的(started)的索引都会被创建snapshot,可以通过在快照请求中指定那些索引被快照:

Plain Text
1PUT /_snapshot/es_repo/snapshot_2018_07_01
2{
3   "indices": "index1,index2",
4   "ignore_unavailable": true,
5   "include_global_state": false
6}
参数 作用
indices 需要被包含在snapshot中的index列表,支持`multi index syntax`
ignore_unavailable 设置为true时,忽略indices中不存在的index.默认情况下没有设置,如果index,不存在会报错
include_global_state 设置为false时,阻止cluster global state被snapshot

cluster global state是指Elasticsearch维护的集群全局元数据信息,具体解释可参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html。

snapshot有以下几个特性:

  • snapshot是增量的,一个snapshot代表的是index的point-in-time 视图(从snapshot创建开始,开始后添加的records不在这个snapshot中不可见)
  • 除了创建这个index所有主分片(primary)的snapshot,snapshot还可以快照 global cluster metadata(包括持久化的cluster setting和templates等)
  • 对于集群而言,任意时刻只能有一个snapshot在进行,所有的快照请求都必须在上一个快照完成后才能被执行,否则会被直接拒绝

如果您希望周期性地进行快照,可以通过BES的定时调度-备份数据功能定时执行快照备份数据,保证数据的安全性。

查询快照

一旦一个snapshot被创建,关于这次snapshot的信息可以通过直接对仓库和快照名字发起一次GET请求,获得特定的快照信息。

基本格式: GET /_snapshot/{your_repo_name}/{your_snapshot_name},具体如下:

Plain Text
1GET /_snapshot/es_repo/snapshot_2018_07_01

返回的响应中包含了快照相关的所有信息:

Plain Text
1{
2   "snapshots": [
3      {
4         "snapshot": "snapshot_2018_07_19",
5         "uuid": "TWKo55e7TSy1Sq4WLxMVrQ",
6         "version_id": 5050099,
7         "version": "5.5.0",
8         "indices": [
9            "snapindex"
10         ],
11         "state": "SUCCESS",
12         "start_time": "2018-07-19T10:53:17.543Z",
13         "start_time_in_millis": 1531997597543,
14         "end_time": "2018-07-19T10:53:21.795Z",
15         "end_time_in_millis": 1531997601795,
16         "duration_in_millis": 4252,
17         "failures": [],
18         "shards": {
19            "total": 1,
20            "failed": 0,
21            "successful": 1
22         }
23      }
24   ]
25}

可以同时获得多个快照的信息,GET请求支持通配符方式匹配多个快照信息,这时候快照的名字代表的意义就起了作用如:

Plain Text
1GET /_snapshot/es_repo/snapshot_order_*

可以使用_all参数获取一个仓库中所有快照的完整列表信息:

Plain Text
1GET /_snapshot/es_repo/_all

停止或删除快照

百度智能云提供的Elasticsearch服务没有单独的停止快照API,停止快照和删除快照是一个语义,如果发现snapshot执行有错误或耗时非常长,可以通过删除这个snapshot来停止后台运行的snapshot:

Plain Text
1DELETE /_snapshot/es_repo/snapshot_2018_07_01

从仓库中删除:

Plain Text
1DELETE /_snapshot/es_repo/snapshot_2018_07_01

一个仓库亦可以直接被删除:

Plain Text
1DELETE /_snapshot/es_repo

注意:删除一个snapshot或删除一个仓库,ES只是删除了集群对仓库或snapshot的位置引用,真实的物理文件等是需要用户自己处理的。当确定所有的快照都不再适用的时候,可以先在Elasticsearch中删除仓库的元数据,然后登录百度智能云BOS控制台手动直接删除仓库。

需要额外注意的是,请不要手动修改或删除BOS仓库中的任何快照文件,手动删除一个快照文件后,将会导致快照处于不可用的状态,恢复的时候会出现不可挽回的损失。

查看快照进度

可以通过status接口查看一个快照的进度信息:

Plain Text
1GET /_snapshot/es_repo/snapshot_2018_07_19/_status

下面是status接口返回的详细统计信息:

Plain Text
1{
2   "snapshots": [
3      {
4         "snapshot": "snapshot_2018_07_19",
5         "repository": "es_repo",
6         "uuid": "TWKo55e7TSy1Sq4WLxMVrQ",
7         "state": "SUCCESS",  ..................  [A]
8         "shards_stats": {
9            "initializing": 0,
10            "started": 0,
11            "finalizing": 0,
12            "done": 1,
13            "failed": 0,
14            "total": 1
15         },
16         "stats": {
17            "number_of_files": 16,
18            "processed_files": 16,
19            "total_size_in_bytes": 18639,
20            "processed_size_in_bytes": 18639,
21            "start_time_in_millis": 1531997598051,
22            "time_in_millis": 2782
23         },
24         "indices": {
25            "snapindex": {
26               "shards_stats": {
27                  "initializing": 0,
28                  "started": 0,
29                  "finalizing": 0,
30                  "done": 1,  ..................... [B]
31                  "failed": 0,
32                  "total": 1
33               },
34               "stats": {
35                  "number_of_files": 16,
36                  "processed_files": 16,
37                  "total_size_in_bytes": 18639,
38                  "processed_size_in_bytes": 18639,
39                  "start_time_in_millis": 1531997598051,
40                  "time_in_millis": 2782
41               },
42               "shards": {
43                  "0": {
44                     "stage": "DONE",............... [C]
45                     "stats": {
46                        "number_of_files": 16,
47                        "processed_files": 16,
48                        "total_size_in_bytes": 18639,
49                        "processed_size_in_bytes": 18639,
50                        "start_time_in_millis": 1531997598051,
51                        "time_in_millis": 2782
52                     }
53                  }
54               }
55            }
56         }
57      }
58   ]
59}

相应中包括快照的所有信息例如快照的开始时间、总大小、文件总数和已经处理完的文件总数等,详细记录了被快照的所有的index的当前状态以及index下的所有shard的状态等。

  • [A]表示这个快照已经成功完成,显示SUCCESS状态,正在运行的快照会显示IN_PROGRESS
  • [B]表示这个index的所有分片(shard)完成快照
  • [C]表示这个index对应的分片(shard)完成快照

不同的状态值表征不同的含义:

状态值 意义
INIT 快照还没有开始,正在做初始化工作
STARTED 快照正在拷贝index文件
FINALIZE 快照的元数据正在写入远端仓库
DONE 快照成功完成
FAILURE 快照失败,失败的原因都可以在statusAPI中看到

恢复快照

一个快照可以通过下面的命令被恢复(restore):

Plain Text
1POST /_snapshot/es_repo/snapshot_2018_07_19/_restore

缺省情况下,指定快照中所有的index都会被恢复,可以通过在请求体中添加indices和include_global_state来指定特定的index和global cluster state:

Plain Text
1POST /_snapshot/es_repo/snapshot_2018_07_19/_restore
2{
3  "indices": "snapindex",
4  "ignore_unavailable": true,
5  "include_global_state": true,
6  "rename_pattern": "snap(.+)",
7  "rename_replacement": "restore$1"
8}

rename_pattern和rename_replacement可以用来对index重新命名,大多数的index的设置可以被重新设置,如下:

Plain Text
1POST /_snapshot/repo/snapshot_wyf_2018_01_29/_restore
2{
3  "indices": "wyf",
4  "index_settings": {
5    "index.number_of_replicas": 0
6  },
7  "ignore_index_settings": [
8    "index.refresh_interval"
9  ]
10}

需要注意的是:一些设置如index.number_of_shards是不可以在restore的时候重新设置的,可以restore到另外一个集群,新的cluster的version必须和做snapshot的集群一样或者更大(仅仅只能大1个major version).例如可以restore一个1.x的snapshot到2.x,但是不能到5.x。

和快照一样,restore请求在检查完快照信息和验证快照中的index信息后立即返回,恢复将在集群后台执行,可以在请求后面追加wait_for_completion参数阻塞请求之道恢复完成:

Plain Text
1POST /_snapshot/es_repo/snapshot_2018_07_19/_restore?wait_for_completion=true

监控快照的恢复

从BOS仓库恢复数据利用了Elasticsearch内部的恢复机制,从内部实现原理来讲,从仓库恢复数据和一个节点从另一个节点上恢复数据是完全等价,Elasticsearch的内部恢复包括原地恢复(existing_store recovery)、远端恢复(peer recovery)和仓库恢复(snapshot recovery)。

恢复进度可以通过recoveryAPI来查看:

Plain Text
1GET /{index}/_recovery
2
3GET snapindex/_recovery

这个接口返回的响应如下:

Plain Text
1{
2   "snapindex": {
3      "shards": [
4         {
5            "id": 0,
6            "type": "SNAPSHOT", ........................ [A]
7            "stage": "DONE", ........................... [B]
8            "primary": true,
9            "start_time_in_millis": 1532065843418,
10            "stop_time_in_millis": 1532065845773,
11            "total_time_in_millis": 2354,
12            "source": { ................................ [C]
13               "repository": "es_repo",
14               "snapshot": "snapshot_2018_07_19",
15               "version": "5.5.0",
16               "index": "snapindex"
17            },
18            "target": {
19               "id": "8wR8Z38USImEeSO0SZ1_hA",
20               "host": "192.168.16.5",
21               "transport_address": "192.168.16.5:9300",
22               "ip": "192.168.16.5",
23               "name": "8wR8Z38"
24            },
25            "index": {
26               "size": {
27                  "total_in_bytes": 18668,
28                  "reused_in_bytes": 0,
29                  "recovered_in_bytes": 18668,
30                  "percent": "100.0%" .................. [D]
31               },
32               "files": {
33                  "total": 16,
34                  "reused": 0,
35                  "recovered": 16,
36                  "percent": "100.0%"
37               },
38               "total_time_in_millis": 2148,
39               "source_throttle_time_in_millis": 0,
40               "target_throttle_time_in_millis": 0
41            },
42            "translog": {
43               "recovered": 0,
44               "total": 0,
45               "percent": "100.0%",
46               "total_on_start": 0,
47               "total_time_in_millis": 158
48            },
49            "verify_index": {
50               "check_index_time_in_millis": 0,
51               "total_time_in_millis": 0
52            }
53         }
54      ]
55   }
56}
  • [A] type表示是从远端仓库快照中进行恢复
  • [B] stage字段表示这个恢复已经完成
  • [C] source字段表示这个恢复已经完成
  • [D] percent字段表示恢复完成的百分比

取消正在进行的恢复

可以通过删除正在恢复的index,取消对这个index的恢复:

Plain Text
1DELETE /snapindex

快照需要注意

  • 一个集群同时只能有一个快照运行
  • 有删除快照的操作时,不能进行快照

恢复需要注意

  • restore的index 可以不存在,如果存在必须是closed状态。
  • restore的index会完全覆盖之前的文件:即使文件完全相同,也会先删除原来old文件,然后在创建新new文件。
  • restore过程会跳过translog recovery过程,创建出新的translog。
  • 如果恢复的目标不是做snapshot的ES集群,而是一个新集群的话,需要在新集群里也创建一下repo,并且将readonly 参数指定为true。

上一篇
数据迁移
下一篇
集群列表