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?
1 回答
当 ES 拍摄快照时,ES 不会拍摄快照,docs
而是拍摄segments
. 当然,这些段包含文档。
为了理解增量的概念,让我们看下面的例子。
假设有一个名为my_index
with的索引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 相关的分段文件,允许您随时恢复索引。
删除文档时会发生什么? 当文档被删除时,最终段文件被合并,新的段被创建。因此,当您在删除文档后拍摄快照时,快照将没有文档。
希望这可以帮助