有奖捉虫:行业应用 & 管理与支持文档专题 HOT

概述

本文档主要描述通过 Snapshot 快照方式,将阿里云 ES 的数据迁移到腾讯云 ES,暂不适用自建 ES 及其他场景迁移。迁移流程为先将阿里云源端 ES 快照存储至阿里云 OSS 桶内,再通过对象存储迁移将数据迁移至腾讯云 COS 桶,最后基于腾讯云 COS 桶内数据恢复快照至腾讯云 ES,完成数据迁移。

使用环境

系统环境

支持 Linux 、 Mac 、Windows 操作系统。

迁移前准备

对象存储桶

在源端云平台创建对象存储桶
在阿里云创建 OSS 存储桶可参考 创建OSS对象存储桶,要求对象存储桶所在地域与 ES 实例保持一致。
在腾讯云控制台创建对象存储桶
您可以通过 对象存储控制台,在存储桶列表页面创建存储桶。
1. 在左侧导航中,单击存储桶列表,进入存储桶列表页面。
2. 单击创建存储桶,要求对象存储桶所在地域与 ES 实例保持一致,其他参数配置可参考 创建存储桶

访问密钥

在源端云平台获取访问密钥
获取阿里云 AccessKeyID 和 AccessKeySecret 的步骤如下:
1. 登录阿里云 RAM 控制台,进入身份管理 > 用户 页面。
2. 单击创建用户,在访问方式选中 Open API 调用方式(选择其他访问方式不生效),确定创建后请及时保存 AccessKeyID 和 AccessKeySecret 信息。详细操作请参见 创建 RAM 用户
3. 在用户列表为刚刚创建的用户添加权限,管理对象存储服务(OSS)的权限(AliyunOSSFullAccess)。详细操作请参见 为 RAM 用户授权
在腾讯云控制台获取访问密钥
在腾讯云访问管理控制台的 API 密钥管理 页面中创建并获取 SecretId 和 SecretKey。详细操作请参见 访问密钥 文档。若您使用子账号进行控制台迁移,则需要使用主账号登录 访问管理控制台,授予子账号 QcloudCOSFullAccess 和 QcloudElasticsearchServiceFullAccess 权限。

ES 访问白名单

需要 ES 实例支持运行 ES 迁移工具的主机访问,请参考 配置实例公网或私网访问白名单,将运行迁移工具的主机地址添加至 ES 的白名单中。

步骤1:获取工具

2. 在迁移服务概览中,找到 ES 迁移工具,单击下载,并解压
或者通过以下命令下载并解压:
wget https://msp-release-1258344699.cos.ap-shanghai.myqcloud.com/package/migration-kit/migration-kit.zip
unzip migration-kit.zip

步骤2:配置sample.yaml文件

将 migration-kit 文件夹中 sample.yaml 参考下图进行配置:



同时,注意增量快照数据迁移时请设置:
closeDestBeforeRestore: true
ossSkipFile: true

步骤3:创建源端的快照到源端对象存储桶中

执行如下命令创建源端的快照,并将快照存储至指定的阿里云存储桶内:
./migration-kit es prepare -c ../../sample.yaml
执行后返回结果如下:



由于数据的备份是异步执行的,可以通过如下的命令查看快照执行的状态。
GET _snapshot/my_backup/snapshot_1
返回如下,其中 state 若返回的是 "SUCESS",则表示快照备份完成。若是 "IN_PROCESS",则表示快照还在备份中。

{
"snapshots": [
{
"snapshot": "snapshot_1",
"uuid": "*********",
"version_id": 5060499,
"version": "5.6.4",
"indices": [
"index_1",
"index_2"
],
"state": "SUCCESS",
"start_time": "2018-05-04T11:44:15.975Z",
"start_time_in_millis": 1525434255975,
"end_time": "2018-05-04T11:45:29.395Z",
"end_time_in_millis": 1525434329395,
"duration_in_millis": 73420,
"failures": [],
"shards": {
"total": 3,
"failed": 0,
"successful": 3
}
}
]
}

步骤4:同步 OSS 快照到 COS

执行如下命令同步源端 OSS 对象存储桶中的快照到目的端 COS 对象存储桶:
./migration-kit es migrate -c ../../sample.yaml
执行后返回结果如下:



也可以前往 对象存储迁移控制台 查看迁移进度。

步骤5:快照恢复到目标 ES

执行如下命令,将目的端 COS 存储桶中保存的快照恢复到目标 ES:
./migration-kit es restore -c ../../sample.yaml
执行完成后,可以在 kibana 里执行如下命令,查看目标 ES 索引信息:
GET _cat/indices?v
执行如下命令查看快照整体恢复进度,最后一行"active_shards_percent_as_number"表示恢复百分比进度:
GET _cluster/health?pretty





常见问题

报错"no such host"

处理方式:查看是否能正常解析域名es-cn-tl32gjly3002awond.public.elasticsearch.aliyuncs.com,尝试更换 DNS 服务器解析测试,例如编辑/etc/resolv.conf修改nameserver为114.114.114.114。

报错"context deadline exceeded"

处理方式:telnet 检查es-cn-tl32gjly3002awond.public.elasticsearch.aliyuncs.com的9200端口是否能通,如不能通检查 ES 是否放开了白名单限制。

快照恢复后目标索引状态是 red 状态




处理方式:索引恢复后目标索引是 red 状态并不显示数据量大小,稍后显示为 yellow 状态索引总存储量大小为主分片大小;后续重建副本分片后索引状态转变为 green 状态,索引总存储量大小显示正常。

怎么设置源端 ES 只读

处理方式:割接时为防止源端 ES 有数据写入,根据业务情况可以选择是否需要设置源端 ES 只读。
PUT _all/_settings
{"index.blocks.read_only": "true"}