最近更新时间:2026-08-07 18:04:28
本节介绍如何将 KES 集群中的数据备份到金山云对象存储(KS3)中,以及如何从备份中恢复数据。您可通过控制台的集群备份功能每天定时自动备份,也可通过脚本手动备份。
备份和恢复是通过ES的快照(snapshot)体系实现的。
如果启用系统自动备份功能,则系统会每天定时对ES执行一次快照。
启用方法:
请确保您已开启KS3存储功能,并为备份建立了存储空间(bucket)。
在集群列表页面选择目标集群并点击数据备份,进入备份管理页面。
开启自动备份开关,填写每日备份时间和目标bucket。
点击提交按钮。
注意:本操作会在ES中自动注册一个名为SystemAutoBackup的快照仓库(若集群版本为8.19.13,快照仓库名称为kes-{clusterId})。首次为全量备份,后面每天增量备份。
从系统自动备份中恢复快照与从用户自行备份中恢复快照的操作基本相同。 区别在于,系统自动备份的快照库名称为SystemAutoBackup(若集群版本为8.19.13,快照仓库名称为kes-{clusterId})。 所以,您可以先查看系统自动备份的快照列表,然后根据快照名称中的日期信息,选择某一天的快照进行恢复。
查看系统自动备份的快照列表:
GET /_snapshot/SystemAutoBackup/_all从返回的快照列表中,选择snap_20191202_000543这个时间为2019-12-02T0:05:43的快照,并从中恢复两个索引:
POST /_snapshot/SystemAutoBackup/snap_20191202_150405/_restore
{
"indices": "my_index_1,my_index_2",
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "restored_$1" // 这里指定新的索引名为restored_my_index_1和restored_my_index_2
}如果您觉得自动备份不够灵活的话,可以自行设置和执行备份。手动备份和自动备份是相互独立的。
在设置备份之前,请确保您已开启KS3存储功能,并为备份建立了存储空间(bucket)。
以下所有操作都是通过向ES发送HTTP请求来完成的。注意:若集群版本为8.19.13,X-Pack开启时需要使用HTTPS请求。
创建一个名为my_repo的快照仓库:
PUT /_snapshot/my_repo
{
"type": "s3",
"settings": {
"bucket": "my_bucket_name",
"base_path": "my_path",
"region": "xxxxx",
"endpoint": "xxxxx.ksyun.com",
"access_key": "xxxxxx",
"secret_key": "xxxxxx"
}
}其中:
bucket:您在KS3中创建的bucket名称
base_path:备份数据在bucket中的保存路径
region:您的KES部署区域,请使用KS3访问域名中的Region英文名称
endpoint:您的KES部署区域对应的KS3域名,请使用KS3访问域名中的内网域名
access_key:您的金山云access_key
secret_key:您的金山云secret_key
查看仓库列表:
GET /_snapshot查看某个仓库:
GET /_snapshot/my_repoDELETE /_snapshot/my_repo该操作不会删除KS3上的数据。
执行快照会触发ES执行一次数据备份。
对所有索引执行快照,并将快照命名为my_snap1:
PUT /_snapshot/my_repo/my_snap1对部分索引执行快照,并将快照命名为my_snap2:
PUT /_snapshot/my_repo/my_snap2
{
"indices": "my_index_1,my_index_2"
}查看快照列表:
GET /_snapshot/my_repo/_all查看某个快照:
GET /_snapshot/my_repo/my_snap1查看正在执行的快照:
GET /_snapshot/my_repo/_current查看正在执行快照的详细进度,包括分片备份进度等:
GET /_snapshot/_status
GET /_snapshot/my_repo/_status
GET /_snapshot/my_repo/my_snap1/_status
GET /_snapshot/my_repo/my_snap1,my_snap2/_status删除已完成或正在进行的快照,该操作会删除KS3上的相关数据:
DELETE /_snapshot/my_repo/my_snap1从快照恢复时,ES会把KS3上的数据导入回来,并建立新的索引。如果ES中已经存在同名索引,恢复会失败。
恢复快照my_snap1中的全部数据:
POST /_snapshot/my_repo/my_snap1/_restore如果不想恢复全部数据,只想恢复指定的索引,并使用新的索引名:
POST /_snapshot/my_repo/my_snap1/_restore
{
"indices": "my_index_1",
"include_global_state": false,
"rename_pattern": "(.+)",
"rename_replacement": "restored_$1" // 这里指定新的索引名为restored_my_index_1
}在恢复过程中,查看索引恢复的状态和百分比:
GET /restored_my_index_1/_recovery删除目标索引即可取消正在进行的恢复:
DELETE /restored_my_index_1