通过阿里云Elasticsearch的自动备份功能,您可以设置数据备份的周期和时间。设置后,系统将按照设定的周期和时间自动备份数据,保证数据的安全性。备份完成后,您可以通过自动备份恢复功能,将数据恢复到原实例中。本文介绍如何使用自动备份功能、查看快照信息以及从自动备份恢复数据。

注意事项

  • 集群的第一个快照是集群数据的完整拷贝,后续所有的快照保留的是已存快照和新快照之间的增量,因此首次快照耗时较长(具体时长与数据量相关),后续快照备份会比较快。
  • 快照仅保存索引数据,不保存Elasticsearch实例自身的监控数据(例如以.monitoring.security_audit为前缀的索引)、元数据、Translog、实例配置数据、Elasticsearch的软件包、自带和自定义的插件、Elasticsearch的日志等。
  • 自动备份只保留最近7天的快照数据。
  • 自动备份数据只能用于恢复到原集群,如果需要跨集群恢复,请参见手动备份与恢复设置跨集群OSS仓库

开启自动备份

  1. 登录阿里云Elasticsearch控制台
  2. 在左侧导航栏,单击Elasticsearch实例
  3. 在顶部菜单栏处,选择资源组和地域,然后在实例列表中单击目标实例ID。
  4. 在左侧导航栏,单击数据备份
  5. 数据备份(免费试用)区域,开启自动备份开关。
  6. 在页面右侧,单击修改配置
    注意 为保证系统安全性,日志增强版类型实例的自动备份时间由系统默认生成,不支持修改。
  7. 自动备份周期设置面板,选择备份周期(自动备份触发的时间)。
    选择自动备份触发的时间
    备份周期 说明
    每30分钟 每30分钟进行一次自动备份。
    每天 每天都会进行自动备份。可自定义备份时间。
    自定义 自定义选择备份的周期和时间。
    注意 自动备份时间为当前实例所在区域的时间。
  8. 单击确定

查看备份快照

开启自动备份功能后,您可以登录Kibana控制台(登录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时间+0080。
    其中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 可选,为匹配上的索引按规则重命名。