自动备份与恢复

开启阿里云Elasticsearch(简称ES)的自动备份功能后,系统将按照设定的备份周期和时间自动备份数据,如果遇到数据误删除、应用逻辑错误等情况时,您可以通过自动备份恢复功能,将特定时间点的备份数据恢复到原ES实例中,保证数据的安全性。本文介绍开启、关闭自动备份功能和恢复备份数据的方法。

背景信息

ES数据备份与恢复依赖于elasticsearch-repository-oss插件,阿里云ES实例默认已安装该插件且不可卸载。关于该插件的详细信息,请参见elasticsearch-repository-oss

注意事项

  • 集群的第一个快照是集群数据的完整拷贝,后续所有的快照同步的是已存快照和新快照之间的增量,因此首次快照耗时较长(具体时长与数据量相关),后续快照备份会比较快。

  • 快照仅保存索引数据,不保存Elasticsearch实例自身的监控数据(例如以.monitoring.security_audit为前缀的索引)、元数据、Translog、实例配置数据、Elasticsearch的软件包、自带和自定义的插件、Elasticsearch的日志等。

  • 自动备份只保留最近7天的快照数据,快照数据为全量数据。

  • 自动备份数据只能用于恢复到原集群,如果需要跨集群恢复,请参见手动备份与恢复设置跨集群OSS仓库

  • 关闭自动备份会进行一次数据备份,更新自动备份开始时间不会进行数据备份。

开启自动备份

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 进入目标实例。
    1. 在顶部菜单栏处,选择资源组和地域。
    2. Elasticsearch实例中单击目标实例ID。
  4. 在左侧导航栏,单击数据备份

  5. 数据备份(免费试用)区域,打开自动备份开关。

  6. 单击自动备份开始时间右侧的设置

    重要

    为保证系统安全性,内核增强版类型实例的自动备份时间由系统默认生成,不支持修改。

  7. 自动备份周期设置面板,选择备份周期(自动备份触发的时间)。

    选择自动备份触发的时间

    备份周期

    说明

    每30分钟

    每30分钟进行一次自动备份。

    每天

    每天都会进行自动备份。可自定义备份时间。

    自定义

    自定义选择备份的周期和时间。

    重要

    自动备份时间为当前实例所在地域的时间。

  8. 单击确定

查看备份快照

开启自动备份功能后,您可以登录Kibana控制台,在对应阿里云Elasticsearch实例的Kibana控制台上,通过_snapshot API查看自动备份快照的信息:

  • 查看快照仓库。

    GET _snapshot

    执行成功后,返回结果示例如下。

    {
      "aliyun_auto_snapshot" : {
        "type" : "oss",
        "settings" : {
          "compress" : "true",
          "base_path" : "cf95b9-185320276651****/es-cn-09k2053us0003****",
          "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com"
        }
      }
    }
                                

    参数

    说明

    aliyun_auto_snapshot

    自动快照仓库在首次快照时生成。阿里云Elasticsearch自动备份快照存储的仓库名称固定为aliyun_auto_snapshot

    说明

    一个仓库可以存储多个快照,每个快照中可以包含所有、部分或单个索引的备份数据。

    type

    快照的存储介质。oss表示快照存储介质为对象存储服务OSS(Object Storage Service)。

    compress

    是否打开快照文件的压缩功能:

    • true:打开压缩功能,仅应用于元数据文件(索引映射和设置)。

    • false(默认值):不打开压缩功能,数据文件未压缩。

    base_path

    快照在OSS中的存储位置。

    endpoint

    OSS所处地域的信息。

  • 查看aliyun_auto_snapshot仓库中,所有快照的信息。

    GET _snapshot/aliyun_auto_snapshot/_all

    执行成功后,返回结果示例如下。

    {
      "snapshots": [
        {
          "snapshot": "es-cn-09k2053us0003****_20210117030003",
          "uuid": "vIdSCkthTeGa0nSj4D****",
          "version_id": 5050399,
          "version": "5.5.3",
          "indices": [
            ".kibana"
          ],
          "state": "SUCCESS",
          "start_time": "2018-06-28T01:22:39.609Z",
          "start_time_in_millis": 1530148959609,
          "end_time": "2018-06-28T01:22:39.923Z",
          "end_time_in_millis": 1530148959923,
          "duration_in_millis": 314,
          "failures": [],
          "shards": {
            "total": 1,
            "failed": 0,
            "successful": 1
          }
        },
        {
          "snapshot": "es-cn-09k2053us0003****_20210118030004",
          "uuid": "XKO_Uwz_Qu6mZrU3Am****",
          "version_id": 5050399,
          "version": "5.5.3",
          "indices": [
            ".kibana"
          ],
          "state": "SUCCESS",
          "start_time": "2018-06-28T01:25:00.764Z",
          "start_time_in_millis": 1530149100764,
          "end_time": "2018-06-28T01:25:01.482Z",
          "end_time_in_millis": 1530149101482,
          "duration_in_millis": 718,
          "failures": [],
          "shards": {
            "total": 1,
            "failed": 0,
            "successful": 1
          }
        }
      ]
    }
    重要

    自动备份时间为当前地域的时间,而以上返回结果中的时间为UTC时间(世界标准时间),会存在时区差。您可根据时区差进行转换,例如北京时间的时区差为8个小时,则北京时间=UTC时间+0800。

    其中state为快照状态,阿里云Elasticsearch实例的快照共有以下5种状态。

    快照状态

    说明

    IN_PROGRESS

    快照正在执行。

    SUCCESS

    快照执行结束,且所有shard中的数据都存储成功。

    FAILED

    快照执行结束,但部分索引中的数据存储不成功。

    PARTIAL

    部分数据存储成功,但至少有1个shard中的数据没有存储成功。

    INCOMPATIBLE

    快照与阿里云Elasticsearch实例的版本不兼容。

    自动备份快照还有以下未显示的默认参数。

    参数

    说明

    max_snapshot_bytes_per_sec

    单节点数据备份的最快速度,默认为每秒40mb

    max_restore_bytes_per_sec

    单节点数据恢复的最快速度,默认为每秒40mb

    chunk_size

    快照时,大文件会被拆分成若干个小文件。该参数用来设置拆分出的文件大小,例如1g10m5k。默认为null,表示无限制。

  • 查看aliyun_auto_snapshot仓库中,指定快照的详细信息。

    GET _snapshot/aliyun_auto_snapshot/<snapshot>/_status

    <snapshot>:自动备份快照名称。可通过查看所有快照命令获取,例如es-cn-09k2053us0003****_20210118030004。

    执行成功后,返回结果示例如下。

    {
      "snapshots": [
        {
          "snapshot": "es-cn-09k2053us0003****_20210118030004",
          "repository": "aliyun_auto_snapshot",
          "uuid": "XKO_Uwz_Qu6mZrU3Am****",
          "state": "SUCCESS",
          "shards_stats": {
            "initializing": 0,
            "started": 0,
            "finalizing": 0,
            "done": 1,
            "failed": 0,
            "total": 1
          },
          "stats": {
            "number_of_files": 4,
            "processed_files": 4,
            "total_size_in_bytes": 3296,
            "processed_size_in_bytes": 3296,
            "start_time_in_millis": 1530148959688,
            "time_in_millis": 77
          },
          "indices": {
            ".kibana": {
              "shards_stats": {
                "initializing": 0,
                "started": 0,
                "finalizing": 0,
                "done": 1,
                "failed": 0,
                "total": 1
              },
              "stats": {
                "number_of_files": 4,
                "processed_files": 4,
                "total_size_in_bytes": 3296,
                "processed_size_in_bytes": 3296,
                "start_time_in_millis": 1530148959688,
                "time_in_millis": 77
              },
              "shards": {
                "0": {
                  "stage": "DONE",
                  "stats": {
                    "number_of_files": 4,
                    "processed_files": 4,
                    "total_size_in_bytes": 3296,
                    "processed_size_in_bytes": 3296,
                    "start_time_in_millis": 1530148959688,
                    "time_in_millis": 77
                  }
                }
              }
            }
          }
        }
      ]
    }

从自动备份恢复数据

自动备份完成后,您可以通过_restore API恢复数据到原Elasticsearch实例中。

重要

恢复.开头的系统索引可能会导致Kibana访问失败,建议不要恢复系统索引。

在Kibana控制台上,执行如下命令,从快照中恢复索引数据:

  • 恢复aliyun_auto_snapshot仓库中,指定快照的所有索引(后台执行)。

    POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore

    <snapshot>:自动备份快照的名称,例如es-cn-abcdefghij****_20180627091600

  • 恢复aliyun_auto_snapshot仓库中,指定快照的所有索引,并等待任务处理完成。

    _restore API为异步调用,实例在确认可执行恢复操作后会立即返回,该恢复任务会在后台执行。您可以通过追加wait_for_completion参数,阻塞调用直到恢复完成再返回信息。

    POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore?wait_for_completion=true

    <snapshot>:自动备份快照名称,例如es-cn-abcdefghij****_20180627091600

  • 恢复aliyun_auto_snapshot仓库中,指定快照的指定索引,并为恢复的索引重命名(后台执行)。

    POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore
    {
    "indices": "index_1",
    "rename_pattern": "index_(.+)",
    "rename_replacement": "restored_index_$1"
    }

    参数

    说明

    <snapshot>

    自动备份快照名称,例如es-cn-abcdefghij****_20180627091600

    indices

    需要恢复的索引名称。

    rename_pattern

    可选,正则匹配需要恢复的索引名称。

    rename_replacement

    可选,为匹配上的索引按规则重命名。

关闭自动备份

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 进入目标实例。
    1. 在顶部菜单栏处,选择资源组和地域。
    2. Elasticsearch实例中单击目标实例ID。
  4. 在左侧导航栏,单击数据备份

  5. 数据备份(免费试用)区域,单击开启自动备份开关,关闭自动备份功能。

相关文档