假设需要自动将2个或更多快照的快照恢复到弹性集群
有必要检测快照操作是否在下一次api调用之前完成:_snaphot/<repository>/<snapshot>/_restore
如果我在快照恢复时呼叫,则群集响应503。
我尝试使用线程池api来运行快照操作:
curl -XGET 'http://127.0.0.1:9200/_cat/thread_pool?h=snapshot.active
但是,无论如何它都会返回0.
获取有关当前正在运行的还原操作的信息的正确方法是什么?
更新: 它是如何设法与ansible一起使用的一个例子:
- name: shell | restore latest snapshot
uri:
url: "http://127.0.0.1:9200/_snapshot/{{ es_snapshot_repository }}/snapshot_name/_restore"
method: "POST"
body: '{"index_settings":{"index.number_of_replicas": 0}}'
body_format: json
- name: shell | get state of active recovering operations | log indices
uri:
url: "http://127.0.0.1:9200/_recovery?active_only"
method: "GET"
register: response
until: "response.json == {}"
retries: 6
delay: 10
答案 0 :(得分:1)
您可以使用Indices Recovery API监控正在恢复的索引的状态。
最简单的方法是查看stage
属性:
init
:恢复尚未开始
index
:读取索引元数据并将字节从源复制到目标
start
:启动引擎;
opening
使用translog的索引:重播事务日志
finalize
:已完成清理:完成
done
:完成
参数active_only
返回有关不在done
状态的分片的信息:
http://127.0.0.1:9200/_recovery?active_only