还原快照 - 亚马逊 OpenSearch 服务

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

还原快照

在恢复快照之前,请确保目标域不使用带待机功能的多可用区。启用待机状态会导致恢复操作失败。

警告

如果您使用索引别名,应在删除别名的索引前停止向该别名写入请求(或将别名切换至其他索引)。停止写入请求有助于避免以下情景:

  1. 您删除某个索引,同时会删除它的别名。

  2. 对于现已删除的别名的错误写入请求会创建一个与别名同名的新索引。

  3. 由于与新索引的命名冲突,您无法再使用别名。如果将别名切换到其他索引,请在从快照中还原时指定 "include_aliases": false

还原快照

  1. 确定要还原的快照。确保此索引的所有设置(例如,自定义分析器软件包或分配要求设置)均与域兼容。要查看所有快照存储库,请运行以下命令:

    curl -XGET 'domain-endpoint/_snapshot?pretty'

    在确定存储库后,您可以运行以下命令查看所有快照:

    curl -XGET 'domain-endpoint/_snapshot/repository-name/_all?pretty'
    注意

    大多数自动快照存储在 cs-automated 存储库中。如果您的域对静态数据进行加密,这些快照将存储在 cs-automated-enc 存储库中。如果您没有看到要查找的手动快照存储库,请确保您已向域注册该存储库。

  2. (可选)如果集群上的索引与快照中的索引之间存在命名冲突,请删除或重命名 OpenSearch Service 域中的一个或多个索引。不能将索引的快照还原到已包含同名索引的 OpenSearch 群集。

    如果索引命名冲突,您可以使用以下选项:

    • 删除现有 OpenSearch Service 域中的索引,然后还原快照。

    • 从快照还原索引时为其重命名,之后为它们重新编制索引。要了解如何重命名索引,请参阅 OpenSearch 文档中的此示例请求

    • 将快照还原到另一个 OpenSearch Service 域 (只能通过手动快照实现)。

    以下命令将删除域中的所有现有索引:

    curl -XDELETE 'domain-endpoint/_all'

    但是,如果您不打算还原所有索引,则可以仅删除一个索引:

    curl -XDELETE 'domain-endpoint/index-name'
  3. 要还原快照,请运行以下命令:

    curl -XPOST 'domain-endpoint/_snapshot/repository-name/snapshot-name/_restore'

    由于针对 OpenSearch 控制面板和精细访问控制索引的特殊权限,尝试还原所有索引时可能会失败,尤其是当您尝试从自动快照还原时。以下示例通过 my-index 快照存储库中的 2020-snapshot 来只还原一个索引 cs-automated

    curl -XPOST 'domain-endpoint/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "my-index"}' \ -H 'Content-Type: application/json'

    您还可能需要还原控制面板和精细访问控制索引以外的所有索引:

    curl -XPOST 'domain-endpoint/_snapshot/cs-automated/2020-snapshot/_restore' \ -d '{"indices": "-.kibana*,-.opendistro*"}' \ -H 'Content-Type: application/json'

    使用 rename_patternrename_replacement 参数,即可在不删除快照数据的情况下恢复快照。有关这些参数的更多信息,请参阅 OpenSearch 文档中的恢复快照 API 请求字段示例请求

注意

如果并非所有主分片都适用于涉及的索引,则快照的 state 可能为 PARTIAL。此值表示未成功存储至少一个分片中的数据。您仍可以从部分快照进行还原,但可能需要使用较旧的快照来还原任何缺失的索引。