有没有办法一次恢复多个快照?

Is there a way to restore multiple snapshots at once?

我在 AWS 上有一个由 4 个 EC2 Elasticsearch(版本 7.7.1)节点组成的集群(包括一个主节点)。 每天制作所有索引的快照(增量)。

此集群建立在“I”类型的 ec2 上以获得良好的 read/write 性能,存储是易变的:如果集群崩溃,所有数据都将消失。这不是我现在可以改变的。

我通过终止我的实例并在恢复我的日常快照之前重建我的集群来模拟集群崩溃。

我找不到加速新集群上快照恢复的方法。 我工作的客户想要集群上 14 天的数据。快照是每日增量的,这意味着我必须恢复 14 个快照来恢复我的所有数据,一次一天。我无法进行一次完全修复。

每次恢复时,都会根据复制策略 (1:1) 在节点之间重新平衡数据。在恢复和集群状态变为绿色之间,我必须等待很长时间。 500Go的数据(跟我们估计的未来的数据相比算不了什么):我花了2个多小时才把我所有的快照都恢复了。

在此过程中,必须关闭所有索引,但恢复快照会打开一些索引,因此我必须在恢复每个快照之前将它们全部关闭... Kibana 和 Logstash 是集群的 sending/listening,因此我必须停止它们以便安静地恢复我的快照。

有什么办法可以改善吗?我找不到一次恢复多个快照的方法。 我应该在恢复过程中停止再平衡吗?

我很惊讶我在上面找不到任何东西,我一定是错过了一些重要的东西:/ 对此有任何想法或经验反馈吗? 非常感谢!

Snapshots being daily incremental, that means I have to restore 14 snapshots to recover all my data, one day at a time.

此说法不正确!您只需恢复最新的快照,即可恢复您的所有数据。

增量意味着每个快照仅包含自上次快照以来创建的数据,但它还链接到旧快照中包含的旧数据,但您不必关心这一点,只需恢复最新的即可你会看到你将拥有所有数据。

同意 Val 在上面的评论。 尽管 elasticsearch 本质上是增量的,但快照的内部架构是这样的,它确保快照的内容在快照开始时是集群内容的精确副本。

因此,如果您将最新的快照恢复到集群,那么在恢复完成后,集群中应该有创建快照时存在的准确数据。