使用对象存储迁移集群数据
功能概述
用户可以将源 Elasticsearch 集群的数据导出至对象存储,再从对象存储将数据导入至目标 ELK 集群,以完成两个集群间的数据迁移。
| 注意 |
|---|
数据迁移过程,请暂停数据写操作,避免数据不一致,建议在业务低峰期执行。 |
前提条件
-
已获取管理控制台登录账号和密码,且已获取集群操作权限。
-
已创建 ELK 集群,且集群状态为
活跃。 -
已创建对象存储,并已获取对象存储 bucket、endpoint 等信息。
-
已创建 API 密钥,并已获取 access_key 和 secret_key。
操作步骤
步骤一:准备 Access Key
创建 API 密钥,用于访问对象存储。详情可参考如何创建 API 密钥。
步骤二:准备对象存储桶
创建对象存储桶,详情参考如何创建对象存储桶。
步骤三:创建目标 ELK 集群
创建 ELK 集群,用于迁移源 ELK 集群数据。详情可参考如何创建 ELK 集群。
步骤四:源集群导出数据至对象存储
-
通过如下命令为源 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
前文创建的对象存储桶的名称。
-
执行以下命令行,创建名为
backup-2019.05.13的快照。系统会将该快照存放于上一步指定的对象存储桶中。# 创建包含集群所有 index 的 snapshot curl -XPUT 'http://<原云平台大数据平台的 Elasticsearch 集群的某一节点的IP地址>:9200/_snapshot/repo-stor/migration-2019.05.13?wait_for_completion=true'
步骤五:从对象存储导入数据至 ELK 集群
-
在 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 地址,其他配置应与上一步中的配置完全相同。
-
通过如下命令恢复存储在对象存储的快照到 ELK 集群,完成数据迁移。
curl -H 'Content-Type: application/json' -XPOST 'http://<ELK集群的某一节点的IP地址>:9200/_snapshot/repo-stor/migration-2019.05.13/_restore'