最近更新时间:2021-07-22 20:01:43
本节介绍如何将 KES 集群中的数据备份到金山云对象存储(KS3)中,以及如何从备份中恢复数据。您可通过控制台的集群备份功能每天定时自动备份,也可通过脚本手动备份。
备份和恢复是通过ES的快照(snapshot)体系实现的。
如果启用系统自动备份
功能,则系统会每天定时对ES执行一次快照。
启用方法:
bucket
)。bucket
。注意:
本操作会在ES中自动注册一个名为SystemAutoBackup
的快照仓库。首次为全量备份,后面每天增量备份。
从系统自动备份
中恢复快照与从用户自行备份
中恢复快照的操作基本相同。
区别在于,系统自动备份
的快照库名称为SystemAutoBackup
。
所以,您可以先查看系统自动备份
的快照列表,然后根据快照名称中的日期信息,选择某一天的快照进行恢复。
查看系统自动备份
的快照列表:
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
请求来完成的。
创建一个名为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_repo
DELETE /_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
纯净模式