功能概述

OpenSearch 支持创建快照将指定索引甚至整个集群的数据存储到某远端仓库,并能从远端仓库存储的快照中恢复数据。

repository-s3 是一款将对象存储桶作为 SnapShot 存储仓库的索引迁移插件。

本章节主要介绍如何通过 repository-s3 管理 OpenSearch 索引冷存储,包括创建冷存储、从冷存储恢复数据、以及查看和删除冷存储仓库和快照。

操作步骤

步骤一:安装 repository-s3 插件

在 OpenSearch 节点上安装 repository-s3 插件,详情可参考安装 repository-s3 插件

步骤二:准备 Access Key

创建 API 密钥,用于访问对象存储。详情可参考如何创建 API 密钥

步骤三:准备对象存储桶

创建对象存储桶,详情参考如何创建对象存储桶

步骤四:存储数据至对象存储

  1. 登录 Dashboard 管理控制台,详情可参考访问 OpenSearch Dashboard

  2. Dev Tools 的 Console 中执行以下命令,创建 Repository。

    PUT _snapshot/<repository_name>
    {
       "type": "s3",
       "settings": {
          "endpoint": "<YourEndpoint>",
          "access_key": "<YourAccessKey>",
          "secret_key": "<YourSecretKey>",
          "bucket": "<bucket_folder>"
          "region": "<region_ID>"
       }
    }

    参数说明

    参数 说明 示例

    repository_name

    自定义 Repository 名称。

    repo-qingstor

    endpoint

    桶访问域名或者 URL。

    s3.pek3a.qingstor.com

    access_key

    API 访问密钥 ID。

    -

    secret_key

    API 访问密钥密钥串。

    -

    bucket

    对象存储桶名。填写前文创建的对象存储桶。

    my_qingstor_bucket

    region

    桶文件夹所在的 Region ID(区域 ID)。

    pek3a

  3. 执行如下命令创建快照,该快照将会被存放在指定的对象存储 Bucket 中。

    • 创建包含集群所有 Index 的 Snapshot。

      curl -H "Content-Type: application/json" -XPUT "$OS_IP:9200/_snapshot/repo-qingstor/backup-2021.12.13?wait_for_completion=true"
    • 创建包含集群指定 Index 的 Snapshot。此处指定 Index 为 index_1index_2

       curl -H "Content-Type: application/json" -XPUT "$OS_IP:9200/_snapshot/repo-qingstor/backup-2021.12.13?wait_for_completion=true" -d'
       {
          "indices": "index_1,index_2",
          "ignore_unavailable": true,
          "include_global_state": false
       }
       '

步骤五:从对象存储恢复数据

OpenSearch 支持将对象存储的数据恢复到另一个集群,从而可实现 OpenSearch 集群之间索引导入与导出。

注意
  • 两个 OpenSearch 集群的版本必须一致,且集群与对象存储之间网络畅通。

  • 在目标集群,需创建与源集群相同的 Repository。

  • 待恢复的 Index 必须是集群中处于关闭状态的 Index,处于打开状态的 Index 将会提示无法恢复。

  1. 登录 Dashboard 管理控制台,详情可参考访问 OpenSearch Dashboard

  2. Dev Tools 的 Console 中执行以下命令,恢复数据。

    • 恢复包含集群所有 Index 的 Snapshot。

      curl -H "Content-Type: application/json" -XPOST "$OS_IP:9200/_snapshot/repo-qingstor/backup-2021.12.13/_restore"
    • 恢复包含集群指定 Index 的 Snapshot。此处指定 Index 为 index_1index_2

       curl -H "Content-Type: application/json" -XPOST "$OS_IP:9200/_snapshot/repo-qingstor/backup-2021.12.13/_restore" -d'
       {
          "indices": "index_1,index_2",
          "ignore_unavailable": true,
          "include_global_state": false,
          "rename_pattern": "index_(.+)",
          "rename_replacement": "restored_index_$1"
       }
       '

附录

用户可参考以下步骤来管理对象存储。

  1. 登录 Dashboard 管理控制台,详情可参考访问 OpenSearch Dashboard

  2. Dev Tools 的 Console 中执行以下命令,查看指定 Repository 信息。

    curl "$OS_IP:9200/_snapshot/repo-qingstor"
  3. 执行以下命令行,查看所有满足特定条件的 Repository 信息。

    curl "$OS_IP:9200/_snapshot/repo*,*backup*"
  4. 执行以下命令行,查看所有 Repository 信息。

    curl "$OS_IP:9200/_snapshot/_all"
  5. 执行以下命令行,删除 Repository。

    curl -XDELETE "$OS_IP:9200/_snapshot/repo-qingstor"
  6. 执行以下命令行,查看指定 Repository 中某 Snapshot 信息。

    curl "$OS_IP:9200/_snapshot/repo-qingstor/backup-2019.05.13"
  7. 执行以下命令行,查看指定 Repository 中所有 Snapshot 信息。

    curl "$OS_IP:9200/_snapshot/repo-qingstor/_all"
  8. 执行以下命令行,删除 Snapshot

    curl -XDELETE "$OS_IP:9200/_snapshot/repo-qingstor/backup-2021.12.13"