1

I regularly take a snapshot of my ES cluster in a s3 bucket and so i wanted to know that if i am deleting my old docs from the cluster and regularly adding new docs then after taking a snapshot how does ES deal with this scenario wheather the docs get deleted from my previous snapshots as well or how does ES keep a backup of my docs. Please explain?

4

1 回答 1

3

当 ES 拍摄快照时,ES 不会拍摄快照,docs而是拍摄segments. 当然,这些段包含文档。

为了理解增量的概念,让我们看下面的例子。

假设有一个名为my_indexwith的索引1 primary shard (shard 0)。当数据被写入索引时,它将为分片创建段文件。

最初,索引 my_index 可能如下所示:

"my_index"
"consists of shard 0"
"shard 0 consists of segements A,B,C"

您在时间 T1 拍摄索引 my_index 的快照 S1。

快照 S1 包含以下元数据:

Index: my_index
Shards: 0
Segments: A,B,C
And then it will copy the segment files.

现在,您索引更多数据。ES 将段 B 和 C 合并为一个新的段 D,并为新数据添加新的段 E。合并分段后,旧分段将从分片中删除。同样,当文档被删除时,会发生段合并

现在索引 my_index 的分片 0 包含段 A、D、E

您在时间 T2 拍摄索引 my_index 的快照 S2。S2 将检查它需要哪些文件。

It will NOT copy segment A (because it already exists in the repo - this is what is meant by incremental). 
It will copy segment D
it will copy segment E

快照 S2 包含以下元数据:

Index: my_index Shards: 0 Segments: A,D,E

什么是增量? 增量性质适用于新的段文件,不一定适用于新数据。对于快照 S2,未复制分段 A,因为它已包含在 S1 中。

删除快照 S1 时会发生什么情况?
1. 段 B 和 C 将被删除,因为它们不再被引用
2. 排除段 A,因为它被快照 S2 引用

删除索引 my_index 时会发生什么情况?
快照仍将包含与 my_index 相关的分段文件,允许您随时恢复索引。

删除文档时会发生什么? 当文档被删除时,最终段文件被合并,新的段被创建。因此,当您在删除文档后拍摄快照时,快照将没有文档。

希望这可以帮助

于 2019-10-23T06:12:11.653 回答