快照和恢复
编辑快照和恢复编辑
快照是正在运行的 Elasticsearch 集群的备份。您可以使用快照来
- 定期备份集群,无需停机
- 在删除或硬件故障后恢复数据
- 在集群之间传输数据
- 通过在冷数据层和冻结数据层中使用可搜索快照来降低存储成本
快照工作流程编辑
Elasticsearch 将快照存储在称为快照存储库的集群外存储位置。在拍摄或恢复快照之前,您必须在集群上注册快照存储库。Elasticsearch 支持多种存储库类型,包括云存储选项,例如
- AWS S3
- Google Cloud Storage (GCS)
- Microsoft Azure
注册快照存储库后,您可以使用快照生命周期管理 (SLM)来自动拍摄和管理快照。然后,您可以恢复快照以恢复或传输其数据。
快照内容编辑
默认情况下,集群的快照包含集群状态、所有常规数据流和所有常规索引。集群状态包括
您还可以仅拍摄集群中特定数据流或索引的快照。包含数据流或索引的快照会自动包含其别名。恢复快照时,您可以选择是否恢复这些别名。
快照不包含或备份
- 瞬态集群设置
- 已注册的快照存储库
- 节点配置文件
- 安全配置文件
功能状态编辑
功能状态包含用于存储 Elasticsearch 安全或 Kibana 等 Elastic 功能的配置、历史记录和其他数据的索引和数据流。
要检索功能状态列表,请使用功能 API。
功能状态通常包括一个或多个系统索引或系统数据流。它还可以包括该功能使用的常规索引和数据流。例如,功能状态可以包括包含功能执行历史记录的常规索引。将此历史记录存储在常规索引中可以让您更轻松地搜索它。
在 Elasticsearch 8.0 及更高版本中,功能状态是备份和恢复系统索引和系统数据流的唯一方法。
快照的工作原理编辑
快照会自动进行重复数据删除,以节省存储空间并降低网络传输成本。为了备份索引,快照会创建索引段的副本并将它们存储在快照存储库中。由于段是不可变的,因此快照只需要复制自存储库上次快照以来创建的任何新段。
每个快照在逻辑上也是独立的。删除快照时,Elasticsearch 仅删除该快照专用的段。Elasticsearch 不会删除存储库中其他快照使用的段。
快照和分片分配编辑
快照从索引的主分片复制段。启动快照时,Elasticsearch 会立即开始复制任何可用主分片的段。如果分片正在启动或重新定位,Elasticsearch 将等待这些过程完成后再复制分片的段。如果一个或多个主分片不可用,则快照尝试将失败。
快照开始复制分片的段后,Elasticsearch 将不会将分片移动到另一个节点,即使重新平衡或分片分配设置通常会触发重新分配。Elasticsearch 仅在快照完成复制分片数据后才会移动分片。
快照开始和停止时间编辑
快照不代表某个时间点的集群。相反,每个快照都包含开始时间和结束时间。快照表示在这两个时间点之间的某个时间点每个分片数据的视图。
快照兼容性编辑
要将快照恢复到集群,快照、集群和任何已恢复索引的版本必须兼容。
快照版本兼容性编辑
您无法将快照恢复到早期版本的 Elasticsearch。例如,您无法将 7.6.0 中拍摄的快照恢复到运行 7.5.0 的集群。
索引兼容性编辑
您从快照恢复的任何索引也必须与当前集群的版本兼容。如果您尝试恢复在不兼容版本中创建的索引,则恢复尝试将失败。
集群版本 |
|||||
索引创建版本 |
6.8 |
7.0–7.1 |
7.2–7.17 |
8.0–8.2 |
8.3-8.14 |
5.0–5.6 |
|||||
6.0–6.7 |
|||||
6.8 |
|||||
7.0–7.1 |
|||||
7.2–7.17 |
|||||
8.0–8.14 |
1. 支持存档索引。
您无法将索引恢复到早期版本的 Elasticsearch。例如,您无法将 7.6.0 中创建的索引恢复到运行 7.5.0 的集群。
兼容的快照可以包含在旧版不兼容版本中创建的索引。例如,7.17 集群的快照可以包含在 6.8 中创建的索引。将 6.8 索引恢复到 8.14 集群会失败,除非您可以使用存档功能。在升级集群之前拍摄快照时请记住这一点。
作为一种解决方法,您可以先将索引恢复到另一个运行最新版 Elasticsearch 的集群,该集群与索引和当前集群都兼容。然后,您可以使用从远程重新索引在当前集群上重建索引。仅当索引的_source
已启用时,才能从远程重新索引。
从远程重新索引所需的时间可能比恢复快照长得多。在开始之前,请使用数据子集测试从远程重新索引过程,以估计您的时间要求。
警告编辑
其他备份方法编辑
拍摄快照是备份集群的唯一可靠且受支持的方法。您无法通过复制其节点的数据目录来备份 Elasticsearch 集群。没有从文件系统级备份恢复任何数据的受支持方法。如果您尝试从这样的备份恢复集群,它可能会失败,并报告损坏或缺少文件或其他数据不一致,或者它可能看起来已成功但静默地丢失了一些数据。
集群节点的数据目录副本不能用作备份,因为它不是它们在单个时间点内容的一致表示。您无法通过在制作副本时关闭节点或获取原子文件系统级快照来解决此问题,因为 Elasticsearch 具有跨越整个集群的一致性要求。您必须使用内置的快照功能进行集群备份。
存储库内容编辑
不要修改存储库中的任何内容,也不要运行可能干扰其内容的进程。如果 Elasticsearch 以外的其他内容修改了存储库的内容,则未来的快照或恢复操作可能会失败,报告损坏或其他数据不一致,或者可能看起来已成功但静默地丢失了一些数据。
但是,只要满足以下条件,您就可以安全地从备份恢复存储库
- 在恢复其内容时,存储库未在 Elasticsearch 中注册。
- 完成存储库恢复后,其内容与您备份时的内容完全相同。
如果您不再需要存储库中的任何快照,请先从 Elasticsearch 中取消注册,然后再从底层存储中删除其内容。
此外,快照可能包含安全敏感信息,您可能希望将其存储在专用存储库中。