开启阿里云Elasticsearch(简称ES)的自动备份功能后,系统将按照设定的备份周期和时间自动备份数据,如果遇到数据误删除、应用逻辑错误等情况时,您可以通过自动备份恢复功能,将特定时间点的备份数据恢复到原ES实例中,保证数据的安全性。本文介绍开启、关闭自动备份功能和恢复备份数据的方法。
背景信息
ES数据备份与恢复依赖于elasticsearch-repository-oss插件,阿里云ES实例默认已安装该插件且不可卸载。关于该插件的详细信息,请参见elasticsearch-repository-oss。
注意事项
集群的第一个快照是集群数据的完整拷贝,后续所有的快照同步的是已存快照和新快照之间的增量,因此首次快照耗时较长(具体时长与数据量相关),后续快照备份会比较快。
快照仅保存索引数据,不保存Elasticsearch实例自身的监控数据(例如以.monitoring和.security_audit为前缀的索引)、元数据、Translog、实例配置数据、Elasticsearch的软件包、自带和自定义的插件、Elasticsearch的日志等。
自动备份只保留最近7天的快照数据,快照数据为全量数据。
自动备份数据只能用于恢复到原集群,如果需要跨集群恢复,请参见手动备份与恢复或设置跨集群OSS仓库。
关闭自动备份会进行一次数据备份,更新自动备份开始时间不会进行数据备份。
开启自动备份
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,单击数据备份。
在数据备份(免费试用)区域,打开自动备份开关。
单击自动备份开始时间右侧的设置。
在自动备份周期设置面板,选择备份周期(自动备份触发的时间)。
备份周期
说明
每30分钟
每30分钟进行一次自动备份。
每天
每天都会进行自动备份。可自定义备份时间。
自定义
自定义选择备份的周期和时间。
重要自动备份时间为当前实例所在地域的时间。
单击确定。
查看备份快照
开启自动备份功能后,您可以登录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
快照时,大文件会被拆分成若干个小文件。该参数用来设置拆分出的文件大小,例如1g、10m、5k。默认为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
可选,为匹配上的索引按规则重命名。
关闭自动备份
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,单击数据备份。
在数据备份(免费试用)区域,单击开启自动备份开关,关闭自动备份功能。