在Elasticsearch集群中,快照是一种简单而且能够满足自动化的备份方式。7.6及以上版本的集群支持通过定义快照生命周期SLM(Snapshot Lifecycle Management)实现自动备份快照;7.6以下版本需要通过客户端定时任务来触发自动备份快照。本文介绍如何在阿里云Elasticsearch上实现定时自动备份快照,并保存至阿里云OSS仓库。
背景信息
关于快照生命周期SLM的详细信息,请参见Snapshot Lifecycle Management。
Elasticsearch数据备份与恢复依赖于elasticsearch-repository-oss插件,阿里云Elasticsearch实例默认已安装该插件且不可卸载。关于该插件的详细信息,请参见elasticsearch-repository-oss。
前提条件
操作步骤
7.6及以上版本
创建SLM。
PUT _slm/policy/auto-snapshots { "schedule": "0 0 0/12 * * ?", "name": "<auto-snap-{now/d}>", "repository": "my_auto_backup", "config": { "indices": "*", "include_global_state": true }, "retention": { "expire_after": "30d", "min_count": 5, "max_count": 50 } }
参数
说明
schedule
定时任务,类似Linux下的crontab命令,取值中的数字分别对应:秒、分钟、小时、天、月、星期、年(可选)。例如,
"0 0 0/12 * * ?"
表示每12小时创建一次快照。关于crontab表达式的详细信息,可参见Cron。name
快照的名称格式。
repository
存放快照的仓库名称。获取方式请参见获取仓库信息。
config
快照的配置信息:
indices:设置快照包含的数据和索引。
*
表示包含所有的数据和索引。include_global_state:设置快照是否包含集群状态以及feature状态。true:包含,false:不包含。
retention
配置快照的保留规则。以上配置示例表示将快照保留30天,保留的快照最少为5个,最多为50个。各参数说明如下:
expire_after:快照保留时间。
min_count:最少保留多少个快照。即使超过保留时间也要满足最小要求。
max_count:最多保留多少个快照。即使未达到保留时间也不能超过最大数。
执行创建的policy。
POST _slm/policy/auto-snapshots/_execute
执行完成后,阿里云Elasticsearch会每隔12小时创建一次快照。您也可以立即执行retention保留规则,命令如下:
POST _slm/_execute_retention
7.6以下版本
配置客户端。
具体操作请参见通过客户端访问阿里云Elasticsearch。
配置并执行定时任务。
本文以配置crontab定时任务为例,在客户端服务器上,执行以下操作:
创建curl命令脚本文件。
vi /root/snapshot.sh
在脚本文件中,添加集群中待备份快照的curl访问命令,并保存。
curl -u elastic:***** -X PUT http://es-*****.public.elasticsearch.aliyuncs.com:9200/_snapshot/my_auto_backup_crontab/snapshot_$(date +%s)
为脚本文件添加可执行的权限。
chmod +x /root/snapshot.sh
配置crontab信息,设置脚本定时执行时间(示例中设置每天凌晨2点执行)。
crontab -e 0 2 * * * /bin/bash /root/snapshot.sh
重启crontab。
sudo /usr/sbin/cron restart
快照备份成功后,您还可以进行快照删除、快照恢复、查看快照恢复信息等操作,详细信息请参见手动备份与恢复。