腾讯云 Elasticsearch 运维篇(十三)数据迁移

2020-02-23 00:08:42 浏览数 (1)

前言

前面我们通过通过腾讯云控制台快速构建了一个ES集群,并能通过云控制台管理界面或者CVM操作管理ES集群。我们知道ES是一个存储搜索分析引擎,那么如何让自己的现有的ES集群的数据跨平台的迁移到腾讯云上来呢??我们推荐ES官方的snapshot方法。下面为大概的过程(因为本人账号属于集体账号,处于安全考虑后面的部分过程粗略讲一下

一、snapshot(跨集群数据、数据量大)

snapshot api 是 ES 用于对数据进行备份和恢复的一组 api 接口,可以通过 snapshot api 进行跨集群的数据迁移,原理就是从源 ES 集群创建数据快照,然后在目标 ES 集群中进行恢复。

现有ES集群IP: 172.18.X.X 要求: 能上外网

现有ES集群IP现有ES集群IP
JPS进程信息JPS进程信息

目标ES集群VIP:10.1.0.7   同网段CVMIP为:10.1.0.14

目标集群同网段IP目标集群同网段IP

需求: 将原ES集群的索引信息通过快照的形式迁移到目标ES。解决步骤如下:

1,首先:在自有的源ES集群上,创建快照所要存储的仓库-repository。仓库类型fs ,首先要在ES配置文件elasticsearch.yml设置仓库路径,注意:此路径标识的目录在本地一定要存在!!

elasticsearch 配置文件更改elasticsearch 配置文件更改

2,其次,重启ES集群 确定节点都正常启动。

3,接下来,我们调用snapshot api 创建 repository 使用如下命令:

创建仓库创建仓库

返回结果:显示错误。如下”:

仓库创建报错仓库创建报错

报错提示的意思是访问被拒绝。。。操作多次,仍是相同的错误。那么是不是仓库所在路径的文件夹没权限呢??

所以,我改了一下文件夹权限 chown -R elas:elas /usr/local/hezhen/test 如下所示:

改权限改权限

然后再次启动ES集群,让配置生效。再次执行上面的命令,发现成功了。如下图:

构建仓库构建仓库

原因很简单:ES 5.x版本后,默认是需要通过普通用户来启用服务的。因为我们刚新建的文件夹的权限是root。elas去启动服务的时候无法将命令写进属于root的文件夹。自然就报错。

3,在自有的集群中创建索引快照,如下:创建一条索引的快照

创建索引的快照创建索引的快照
为索引创建快照为索引创建快照

创建完后,文件夹里边有数据了,验证一下“

索引数据索引数据

如果要备份所有索引,可以使用如下命令:

PUT _snapshot/aa_buckup/snapshot_1?wait_for_completion=true

查看快照信息 GET _snapshot/aa_buckup/snapshot_1?pretty

查看索引快照信息查看索引快照信息

4,目标ES集群中创建repository

方法:在腾讯云上创建 COS 对象 bucket,把仓库建在 COS 的某个 bucket 下。步骤

首先:你需要登录到腾讯云控制台的COS(对象存储服务)项去新建一个bucket桶,并命名为自己习惯的名字

其次:在Kibana命令行下去新建一个仓库,将其映射到腾讯云

新建COS仓库新建COS仓库

如果报下面的错,说明你要去云控制台去设置安全秘钥与访问码

那么这样在目标集群上就把ES仓库建立在自己的Bulk上了。

最后,将源 ES 集群创建好的 snapshot 上传至目标 ES 集群创建好的仓库中。(打包--下载--解压----上传)

5,在目标集群从快照恢复索引 使用此命令即可

GET _snapshot/aa_buckup/snapshot_1/_restore?wait_for_completion=true

6,查看快照恢复状态

GET _snapshot/_status

二、总结

1,ES数据作集群迁移的时候根据不同的使用场景有不同的方法。比如还有elasticsearch-dump 、Logstash.他们的区别是:elasticsearch-dump 和 logstash 迁移方式更适合于源 ES 集群和目标 ES 集群处于同一网络的情况下进行迁移。需要跨云厂商的迁移,可以选择使用 snapshot 的方式进行迁移,例如从阿里云 ES 集群迁移至腾讯云 ES 集群。

2,elasticsearchdump 工具和 MySQL 数据库用于做数据备份的工具 mysqldump 类似,都是逻辑备份,需要将数据一条一条导出后再执行导入,所以适合数据量小的场景下进行迁移。

3,snapshot 的方式适合数据量大的场景下进行迁移

因此,我们这里重点介绍了一下snapshot的使用。因为它不受网络限制,属于离线跨群的数据迁移工具。后面有时间我们再继续深入讲解它更多的案例应用。

0 人点赞