快照与恢复

编辑

快照是正在运行的 Elasticsearch 集群的备份。您可以使用快照来

  • 定期备份集群,无需停机
  • 在删除或硬件故障后恢复数据
  • 在集群之间传输数据
  • 通过在冷数据层和冻结数据层中使用可搜索快照来降低存储成本

快照工作流程

编辑

Elasticsearch 将快照存储在称为快照仓库的集群外存储位置。在您创建或恢复快照之前,必须在集群上注册快照仓库。Elasticsearch 支持多种带有云存储选项的仓库类型,包括

  • AWS S3
  • Google Cloud Storage (GCS)
  • Microsoft Azure

注册快照仓库后,您可以使用快照生命周期管理 (SLM)来自动创建和管理快照。然后,您可以恢复快照以恢复或传输其数据。

快照内容

编辑

默认情况下,集群的快照包含集群状态、所有常规数据流和所有常规索引。集群状态包括

您还可以仅创建集群中特定数据流或索引的快照。包含数据流或索引的快照会自动包含其别名。恢复快照时,您可以选择是否恢复这些别名。

快照不包含或备份

功能状态

编辑

功能状态包含用于存储 Elastic 功能(如 Elasticsearch 安全或 Kibana)的配置、历史记录和其他数据的索引和数据流。

要检索功能状态列表,请使用功能 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.17

5.0–5.6

Yes

No

No

No

Yes[1]

6.0–6.7

Yes

Yes

Yes

No

Yes[1]

6.8

Yes

No

Yes

No

Yes[1]

7.0–7.1

No

Yes

Yes

Yes

Yes

7.2–7.17

No

No

Yes

Yes

Yes

8.0–8.17

No

No

No

Yes

Yes

1. 支持归档索引

您无法将索引恢复到早期版本的 Elasticsearch。例如,您无法将 7.6.0 中创建的索引恢复到运行 7.5.0 的集群。

兼容的快照可以包含在旧的不兼容版本中创建的索引。例如,7.17 集群的快照可以包含在 6.8 中创建的索引。除非您可以使用归档功能,否则将 6.8 索引恢复到 8.17 集群会失败。如果您在升级集群之前创建快照,请记住这一点。

作为一种解决方法,您可以首先将索引恢复到另一个运行与索引和当前集群都兼容的最新版本的 Elasticsearch 的集群。然后,您可以使用从远程重新索引在当前集群上重建索引。只有在启用索引的_source时,才能从远程重新索引。

从远程重新索引可能比恢复快照需要更长的时间。在开始之前,请使用数据的子集测试从远程重新索引过程,以估计您的时间要求。

警告

编辑

其他备份方法

编辑

创建快照是备份集群的唯一可靠且受支持的方法。 您无法通过复制其节点的数据目录来备份 Elasticsearch 集群。没有支持的方法可以从文件系统级别的备份恢复任何数据。如果您尝试从此类备份恢复集群,它可能会因报告损坏或缺少文件或其他数据不一致而失败,或者它可能看似成功但默默丢失了一些数据。

集群节点的数据目录副本不能用作备份,因为它不是在单个时间点对其内容的统一表示。您无法通过在复制时关闭节点或通过采用原子文件系统级别快照来修复此问题,因为 Elasticsearch 具有跨整个集群的一致性要求。您必须使用内置的快照功能进行集群备份。

仓库内容

编辑

请勿修改仓库中的任何内容或运行可能干扰其内容的进程。如果 Elasticsearch 以外的其他内容修改了仓库的内容,则将来的快照或恢复操作可能会失败,报告损坏或其他数据不一致,或者可能看似成功但默默丢失了一些数据。

但是,只要满足以下条件,您可以安全地从备份中恢复仓库

  1. 在恢复仓库内容时,该仓库未在 Elasticsearch 中注册。
  2. 当您完成仓库恢复时,其内容与您进行备份时完全相同。

如果您不再需要仓库中的任何快照,请在从底层存储中删除其内容之前,从 Elasticsearch 中取消注册它。

此外,快照可能包含安全敏感信息,您可能希望将其存储在专用仓库中