快照管理
快照管理(SM)允许您自动化创建快照。要使用此功能,您需要安装 索引管理 (IM) 插件。快照仅存储自上次快照以来的增量更改。因此,虽然初始快照可能是一个繁重的操作,但后续快照的开销极小。要设置自动快照,您必须创建一个具有所需 SM 计划和配置的 SM 策略。
当您创建 SM 策略时,其文档 ID 会被命名为 <policy_name>-sm-policy
。因此,SM 策略必须遵守以下规则:
-
SM 策略必须具有唯一名称。
-
创建后无法更新策略名称。
SM 创建的快照名称格式为 <policy_name>-<date>-<random number>
。由于 <policy_name>
前缀,由不同策略同时创建的两个快照始终具有不同的名称。为避免同一策略内的名称冲突,每个快照的名称都包含一个随机字符串后缀。
每个策略都有关联的元数据,用于存储策略状态。快照管理将 SM 策略和元数据保存在系统索引中,并从系统索引中读取它们。因此,快照管理依赖于 OpenSearch 集群的索引和搜索功能。策略的元数据仅保留最新创建和删除的信息。在每次运行计划作业之前读取元数据,以便 SM 可以从上一个作业的状态继续执行。您可以使用 explain API 查看元数据。
SM 计划是一个自定义的 cron 表达式。它由两部分组成:一个创建计划和一个删除计划。您必须设置一个创建计划,指定快照创建的频率和时间。您可以选择设置一个单独的快照删除计划。
SM 配置包括快照的索引和存储库,并支持您在使用 API 创建快照时可以定义的所有参数。此外,您可以为快照名称中使用的日期指定格式和时区。
性能
一个快照可以包含集群中任意数量的索引。我们预计一个集群中最多有几十个 SM 策略,但快照存储库可以安全地扩展到数千个快照。然而,为了管理其元数据,大型存储库需要集群管理节点上更多的内存。
快照管理依赖于 Job Scheduler 插件来调度定期运行的作业。每个 SM 策略对应一个 SM 调度作业。调度作业是轻量级的,因此 SM 的负担取决于快照创建频率和运行快照操作本身的负担。
并发性
一个 SM 策略不支持并发快照操作,因为过多的此类操作可能会降低集群性能。快照操作(创建或删除)是异步执行的。SM 在上一个异步操作完成之前不会启动新操作。
我们不建议在一个集群中创建具有相同计划和重叠索引的多个 SM 策略,因为它会导致在相同索引上并发创建快照并影响性能。
我们不建议在不同集群中为具有相同计划的多个 SM 策略设置相同的存储库,因为它可能会导致该存储库的负担突然增加。
故障管理
如果快照操作失败,它最多会重试三次。失败消息保存在 metadata.latest_execution
中,并在后续快照操作开始时被覆盖。您可以使用 explain API 查看失败消息。在使用 OpenSearch Dashboards 时,您可以在策略详情页面上查看失败消息。可能的失败原因包括索引状态为红色和分片重新分配。
安全
安全插件为快照管理操作提供了两个内置角色:snapshot_management_full_access
和 snapshot_management_read_access
。有关每个角色的描述,请参阅预定义角色。
下表列出了每个快照管理 API 所需的权限。
功能 | API | 权限 |
---|---|---|
获取策略 | GET _plugins/_sm/policies GET _plugins/_sm/policies/ policy_name | cluster:admin/opensearch/snapshot_management/policy/get cluster:admin/opensearch/snapshot_management/policy/search |
创建/更新策略 | POST _plugins/_sm/policies/policy_name PUT _plugins/_sm/policies/ policy_name ?if_seq_no=1&if_primary_term=1 | cluster:admin/opensearch/snapshot_management/policy/write |
删除策略 | DELETE _plugins/_sm/policies/policy_name | cluster:admin/opensearch/snapshot_management/policy/delete |
解释 | GET _plugins/_sm/policies/policy_names /_explain | cluster:admin/opensearch/snapshot_management/policy/explain |
启动 | POST _plugins/_sm/policies/policy_name /_start | cluster:admin/opensearch/snapshot_management/policy/start |
停止词 | POST _plugins/_sm/policies/policy_name /_stop | cluster:admin/opensearch/snapshot_management/policy/stop |
API
下表列出了所有 快照管理 API 功能。
功能 | API | 描述 |
---|---|---|
创建策略 | POST _plugins/_sm/policies/policy_name | 创建 SM 策略。 |
更新策略 | PUT _plugins/_sm/policies/policy_name ?if_seq_no=sequence_number &if_primary_term=primary_term | 修改 policy_name 策略。 |
获取所有策略 | GET _plugins/_sm/policies | 返回所有 SM 策略。 |
获取策略 policy_name | GET _plugins/_sm/policies/policy_name | 返回 policy_name SM 策略。 |
删除策略 | DELETE _plugins/_sm/policies/policy_name | 删除 policy_name 策略。 |
解释 | GET _plugins/_sm/policies/policy_names /_explain | 提供由 policy_names 指定的所有策略的启用/禁用状态和元数据。 |
启动策略 | POST _plugins/_sm/policies/policy_name /_start | 启动 policy_name 策略。 |
停止策略 | POST _plugins/_sm/policies/policy_name /_stop | 停止 policy_name 策略。 |