功能概述

用户可以将源 Elasticsearch 集群的数据导出至对象存储,再从对象存储将数据导入至目标 ELK 集群,以完成两个集群间的数据迁移。

注意

数据迁移过程,请暂停数据写操作,避免数据不一致,建议在业务低峰期执行。

前提条件

  • 已获取管理控制台登录账号和密码,且已获取集群操作权限。

  • 已创建 ELK 集群,且集群状态为 活跃

  • 已创建对象存储,并已获取对象存储 bucketendpoint 等信息。

  • 已创建 API 密钥,并已获取 access_keysecret_key

操作步骤

步骤一:准备 Access Key

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

步骤二:准备对象存储桶

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

步骤三:创建目标 ELK 集群

创建 ELK 集群,用于迁移源 ELK 集群数据。详情可参考如何创建 ELK 集群

步骤四:源集群导出数据至对象存储

  1. 通过如下命令为源 Elasticsearch 集群创建 Repository。

    curl -XPUT 'http://<源 Elasticsearch 的 IP 地址>:9200/_snapshot/repo-/' -d'
    {
      "type": "s3",
      "settings": {
        "endpoint": "s3.pek3a.stor.com",
        "access_key": "<YourAccessKey>",
        "secret_key": "<YourSecretKey>",
        "bucket": "my_stor_bucket"
      }
    }
    '

    上述命令必须指定的几个关键参数包括:

    参数 说明

    源 Elasticsearch 的 IP 地址

    填写源 Elasticsearch 集群任一节点 IP 地址。

    endpoint

    填写对象存储的域名。

    access_key

    云平台账号关联的 access_key

    secret_key

    云平台账号关联的 secret_key

    bucket

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

  2. 执行以下命令行,创建名为 backup-2019.05.13 的快照。系统会将该快照存放于上一步指定的对象存储桶中。

     # 创建包含集群所有 index 的 snapshot
    curl -XPUT 'http://<原云平台大数据平台的 Elasticsearch 集群的某一节点的IP地址>:9200/_snapshot/repo-stor/migration-2019.05.13?wait_for_completion=true'

步骤五:从对象存储导入数据至 ELK 集群

  1. 在 ELK 集群上创建和上一步中相同配置的 Repository。命令行中的 <ELK集群的任一节点的IP地址> 需根据 ELK 集群详情进行填写。

    curl -H 'Content-Type: application/json' -XPUT 'http://<ELK集群的任一节点的IP地址>:9200/_snapshot/repo-stor/' -d'
    {
      "type": "s3",
      "settings": {
        "endpoint": "s3.pek3a.stor.com",
        "access_key": "<YourAccessKey>",
        "secret_key": "<YourSecretKey>",
        "bucket": "my_stor_bucket"
      }
    }
    '
    说明

    这里只有 IP 地址需变更为目标 ELK 集群的任一节点的 IP 地址,其他配置应与上一步中的配置完全相同。

  2. 通过如下命令恢复存储在对象存储的快照到 ELK 集群,完成数据迁移。

    curl -H 'Content-Type: application/json' -XPOST 'http://<ELK集群的某一节点的IP地址>:9200/_snapshot/repo-stor/migration-2019.05.13/_restore'