《企业级云原生白皮书项目实战》——第五章 大数据——5.1 检索分析服务 Elasticsearch版——5.1.6 数据备份恢复(2) https://developer.aliyun.com/article/1228731?groupCode=supportservice
5.1.6.3 恢复备份快照
快照恢复到自集群,首先要先查看快照信息,可以通过_snapshot API查看自动备份快照的信息。
5.1.6.3.1 查看备份快照
查看目前所有快照仓库命令如下
GET _snapshot
然后是查看aliyun_auto_snapshot仓库中,所有快照的信息
{ "aliyun_auto_snapshot" : { "type" : "oss", "settings" : { "compress" : "true", "base_path" : "055a16-1721440269810815/es-cn-6ja205fqm00047781", "endpoint" : "http://oss-cn-hangzhou-internal.aliyuncs.com" }
其中"aliyun_auto_snapshot"是自动快照仓库在首次快照时,生成的默认快照仓库。"type"为快照的存储介质,oss表示快照存储介质为对象存储服务OSS。"compress"是否打开快照文件的压缩功能,true为打开压缩功能,false为不打开压缩功能。"base_path"表示快照在OSS中的存储位置,"endpoint"是OSS bucket的endpoint。
查看aliyun_auto_snapshot仓库中,所有快照的信息命令如下
GET _snapshot/aliyun_auto_snapshot/_all
查看aliyun_auto_snapshot仓库中,指定快照的详细信息命令如下
GET _snapshot/aliyun_auto_snapshot/<snapshot>/_status
5.1.6.3.2 恢复备份快照
从快照中恢复索引主要分为本集群恢复快照和跨集群恢复快照。
本集群恢复快照分为以下几种
1.恢复aliyun_auto_snapshot仓库中,指定快照的所有索引(后台执行),其中为自动备份快照的名称。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore
2.恢复aliyun_auto_snapshot仓库中,指定快照的所有索引,并等待任务处理完成。"_restore API"为异步调用,实例在确认可执行恢复操作后会立即返回,该恢复任务会在后台执行。您可以通过追加wait_for_completion参数,阻塞调用直到恢复完成再返回信息,其中""为自动备份快照名称。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore?wait_for_completion=true
3.恢复aliyun_auto_snapshot仓库中,指定快照的指定索引,并为恢复的索引重命名(后台执行)。
POST _snapshot/aliyun_auto_snapshot/<snapshot>/_restore { "indices": "index_1", "rename_pattern": "index_(.+)", "rename_replacement": "restored_index_$1" }
""为自动备份快照名称。"indices"为需要恢复的索引名称。"rename_pattern"表示正则匹配需要恢复的索引名称。"rename_replacement"表示为匹配上的索引按规则重命名。
跨集群进行快照恢复,只支持已进行了自动快照备份的源Elasticsearch实例仓库中的数据,恢复到目标端Elasticsearch实例中。并且源端实例与目标端实例需要相同地域、归属于相同账号、源端实例的版本低于或等于目标端实例的版本。如果源端和目标端实例的版本都是商业版6.7.0,请确保两个实例的内核版本都是最新或者目标端的内核版本比源端高,跨集群OSS仓库设置功能只支持高版本的实例引用相同版本或低版本的仓库,不支持低版本实例引用高版本仓库。例如有两个6.7.0版本的Elasticsearch实例,ID分别为test_a和test_b,其中test_a已经开通了自动快照备份功能,且已经进行过一次快照。如果test_b想从test_a的自动快照恢复数据,那么需要在test_b集群控制台设置跨集群OSS仓库。首先要在控制台添加源实例的OSS仓库引用,添加成功后,源端实例显示在当前页面,并显示引用仓库的状态。然后在控制台上可以查看到引用实例ID、引用仓库名称和,引用仓库状态。然后在test_b集群执行以下命令,查询指定实例仓库中的所有快照信息,该请求会返回指定仓库下所存储的所有快照信息,重点主要下快照id。
GET /_cat/snapshots/引用仓库名称?v
然后根据上一步获取的快照id,执行以下命令恢复该快照下的指定索引。
1.恢复单个索引
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore {"indices": "fifile-2019-08-25"}
2.恢复多个索引
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore {"indices": "kibana_sample_data_ecommerce,kibana_sample_data_logs"}
3.恢复所有索引(除过.开头的系统索引)
POST _snapshot/aliyun_snapshot_from_es-cn-a/es-cn-a_20190705220000/_restore {"indices":"*,-.monitoring*,-.security*,-.kibana*","ignore_unavailable":"true"}