阿里云 Elasticsearch 支持两种自动备份快照的方式:7.6 及以上版本通过快照生命周期管理 SLM(Snapshot Lifecycle Management)实现定时快照和自动过期清理;7.6 以下版本通过客户端 crontab 定时任务触发快照创建。两种方式都将快照保存至 OSS 仓库。
背景信息
关于快照生命周期SLM的详细信息,请参见Snapshot Lifecycle Management。
Elasticsearch数据备份与恢复依赖于elasticsearch-repository-oss插件,阿里云Elasticsearch实例默认已安装该插件且不可卸载。关于该插件的详细信息,请参见elasticsearch-repository-oss。
7.6及以上版本(推荐)
开始前,需要完成以下准备:
创建一个标准存储类型的 OSS Bucket(不支持归档存储类型),Bucket 地域与 Elasticsearch 实例保持一致。具体操作参见创建存储空间。
创建快照仓库,将 OSS Bucket 关联到 Elasticsearch 实例。具体操作参见创建快照仓库。
在目标实例的 Kibana 控制台中,单击Dev Tools,执行以下操作。
创建 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
Cron 表达式,格式为:秒 分钟 小时 天 月 星期 年(可选)。
"0 0 0/12 * * ?"表示每 12 小时创建一次快照。详细信息参见Cron。name
快照的名称格式。支持日期数学表达式,如
<auto-snap-{now/d}>按日期命名。repository
快照仓库名称。获取方式参见获取仓库信息。
config.indices
快照包含的索引。
*表示所有索引。config.include_global_state
是否包含集群状态和 Feature 状态。
true包含,false不包含。retention.expire_after
快照保留时间。示例中为 30 天。
retention.min_count
最少保留快照数。即使超过保留时间,也会保留该数量的快照。
retention.max_count
最多保留快照数。即使未达到保留时间,超出该数量的快照也会被删除。
执行 SLM 策略,立即创建一次快照。
POST _slm/policy/auto-snapshots/_execute执行完成后,Elasticsearch 会按 schedule 参数的设定自动创建快照。如需立即执行 retention 清理规则,运行以下命令:
POST _slm/_execute_retention
7.6以下版本
7.6 以下版本不支持 SLM,需要通过客户端 crontab 定时任务实现自动快照。
开始前,需要完成以下准备:
创建一个标准存储类型的 OSS Bucket(不支持归档存储类型),Bucket 地域与 Elasticsearch 实例保持一致。具体操作参见创建存储空间。
创建快照仓库。具体操作参见创建快照仓库。
配置客户端,确保能通过公网或内网访问 Elasticsearch 实例。具体操作参见通过应用程序连接集群。
在客户端服务器上执行以下操作:
创建快照备份脚本。
vi /root/snapshot.sh在脚本文件中添加以下内容并保存。将
elastic:*****替换为实际的用户名和密码,将es-*****替换为实际的实例 ID。curl -u elastic:***** -X PUT https://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 会自动加载新配置,无需手动重启 cron 服务。
快照备份成功后,可以进行快照删除、快照恢复、查看恢复信息等操作,详细信息参见手动备份与恢复。如需将快照恢复到其他集群,需要在目标集群中创建仓库并映射到相同的 OSS 地址。