暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch数据迁移工具之ESM

IT那活儿 2022-03-07
5660

点击上方“IT那活儿”,关注后了解更多内容,不管IT什么活儿,干就完了!!!

在使用Elasticsearch的时候不可避免的会涉及到集群的升级或者是业务的迁移等场景,此时就需要对数据进行迁移,es数据迁移的工具有很多比如reindex、esm、elasticdump、logstash和快照等方式。

使用ESM的优势是针对少数业务迁出,索引和数据相对较少,不需要修改ES配置文件不用重启集群,降低数据迁移对集群其他业务的影响的背景下相对来说速度较快的一种方案。

有数据测试表示迁移100W条数据ESM的速度仅次于reindex,接近logstash的两倍之快,当然这些与网络环境和硬件有必然的关系,我们在这里仅做参考即可。



01

实验环境及准备

1.1 本次实验环境
本地环境:
云环境:
ESM版本:0.5.0
1.2 实验前准备
1.2.1 搭建两套ES集群,在这里不做演示。
1.2.2 上传esm的tar包并解压。
1.2.3 查看一下帮助文档并确认安装成功。
1.3 ESM各个参数用法简介

02

实验案例

话不多说上实验!
Demo1
1)创建一个索引,设置主分片为1,副本分片为2。
2)将索引导出到本地 -o将源索引的文档输出到本地文件。
./bin/esm -s http://192.168.1.20:9200 -m elastic:123456 -o wsq_json.out -x wsq_esm_inbdex
3)删除索引。
4)将下载到本地的索引再进行导入。
./bin/esm -i wsq_json.out -n user:paswd -d http://192.168.1.20:9200
5)此时的索引主分片为1,副本为1。
由此可得知导出的数据并不会将其属性也就是设置的mappings和setting导出,导入数据则会使用es默认分片数进行创建索引。同时也验证了该工具离线本地迁移的可行性。
Demo2
1)添加kibana的测试数据集来做测试。
2)测试与云服务器kibana服务的网络联通性。
3)将w:并发数设置为10,b:bulk大小设置为 10M ,scroll批量值大小设置为10000。
由于实验环境的虚拟机配置比较低,直接给整趴一个节点并报错如下,如果在生产环境一定要根据硬件调整传输参数的大小,还有一个错误:复制索引参数为-x,这里使用了-o,这里参数如果没跟对轻则超时报错,重则节点挂掉。
4)把节点拉起来继续开干。
第一个索引传输的时候是正常的,当传输测试数据的时候发现Bulk少了2,在云服务器查看索引已经正常传输过来,此时的索引其实没有完整的传输过来。
将索引保存到本地,此时是正常的。
怀疑和Bulk的参数设定有关  Bulk默认大小为5,将Bulk调至100,则可以正确传输。


03

总结分析

使用ESM的时候支持指定集群任意节点,所以要选择相对来说压力较小的节点作为数据迁移的源节点较好。
数据迁移要根据场景选择最适合的工具和方法才能达到最好的效果。


end



本文作者:王思强

本文来源:IT那活儿(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论