概述
本文档主要描述通过 Snapshot 快照方式,将阿里云 ES 的数据迁移到腾讯云 ES,暂不适用自建 ES 及其他场景迁移。迁移流程为先将阿里云源端 ES 快照存储至阿里云 OSS 桶内,再通过对象存储迁移将数据迁移至腾讯云 COS 桶,最后基于腾讯云 COS 桶内数据恢复快照至腾讯云 ES,完成数据迁移。
说明:
本操作指引仅供参考示意,旨在为用户提供清晰指南,部分素材来源于第三方公开信息,具体以第三方的相关页面为准。
使用环境
系统环境
支持 Linux 、 Mac 、Windows 操作系统。
迁移前准备
对象存储桶
在源端云平台创建对象存储桶
在腾讯云控制台创建对象存储桶
1. 在左侧导航中,单击存储桶列表,进入存储桶列表页面。
2. 单击创建存储桶,要求对象存储桶所在地域与 ES 实例保持一致,其他参数配置可参考 创建存储桶。
访问密钥
在源端云平台获取访问密钥
获取阿里云 AccessKeyID 和 AccessKeySecret 的步骤如下:
1. 登录阿里云 RAM 控制台,进入身份管理 > 用户 页面。
2. 单击创建用户,在访问方式选中 Open API 调用方式(选择其他访问方式不生效),确定创建后请及时保存 AccessKeyID 和 AccessKeySecret 信息。详细操作请参见 创建 RAM 用户。
3. 在用户列表为刚刚创建的用户添加权限,管理对象存储服务(OSS)的权限(AliyunOSSFullAccess)。详细操作请参见 为 RAM 用户授权。
在腾讯云控制台获取访问密钥
在腾讯云访问管理控制台的 API 密钥管理 页面中创建并获取 SecretId 和 SecretKey。详细操作请参见 访问密钥 文档。若您使用子账号进行控制台迁移,则需要使用主账号登录 访问管理控制台,授予子账号 QcloudCOSFullAccess 和 QcloudElasticsearchServiceFullAccess 权限。
ES 访问白名单
步骤1:获取工具
1. 登录 云迁移控制台。
2. 点击右侧菜单迁移工具中的更多,找到 ES 迁移工具,单击下载工具,并解压。
或者通过以下命令下载并解压:
wget https://msp-release-1258344699.cos.ap-shanghai.myqcloud.com/package/migration-kit/migration-kit.zipunzip migration-kit.zip
步骤2:配置sample.yaml文件
将 migration-kit 文件夹中 sample.yaml 参考下图进行配置:


同时,注意增量快照数据迁移时请设置:
closeDestBeforeRestore: trueossSkipFile: 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"}