在实际的应用场景中,特别是面向2C场景里面,我们使用elasticsearch一般都至少会准备两套elasticsearch集群环境供切换。所以对于两套elasticsearch集群的数据做同步是很有必要的。本文的话,我们来介绍下使用Elasticsearch-dump工具进行数据迁移。
在前面的文章《Elasticsearh-dump安装教程》我们已经介绍了Elasticsearch-dump安装的教程,这里嘉定我们已经安装完毕了这个elasticsearch-dump工具。下面我们直接开始。
1)准备一个新的elasticsearch集群
首先我们要有一个老的elasticsearch集群,这里我们的版本以7.6.0为演示点,如下图:
在这个老的elasticsearch集群里面,我们有一个test的索引,里面我们已经做了1亿多点的数据。然后我们再准备一个新的elasticsearch集群,版本必须要和原来的版本保持一致,这里我们还是使用7.6.0版本,示例图如下:
2)使用elasticsearch-dump工具把原集群的数据迁移到新集群中去
这里我们使用elasticsearch-dump工具进行迁移的时候,会涉及到3方面的迁移,分别是:
index mapping data
所以需要分3步来迁移这里的数据,并且要按照上面的顺序从上往下进行迁移。
1、迁移index
这里我们迁移index的时候,使用elasticsearch-dump工具的语法是:
elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=settings
我们这里由于没有设置用户名和密码,因此这里我们可以使用如下的命令:
elasticdump --input=http://192.168.31.218:9200/test --output=http://118.195.182.110:9200/test --type=settings
当出现如下图所示,就代表index迁移完毕了
然后我们再回到新的集群,查看索引是否迁移成功,如下图:
从上图所示我们可以看到index已经成功迁移了。
2、迁移mapping
上面我们迁移了index,接下来我们就迁移这个test索引的mapping信息,使用的语法如下:
elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=mapping
同样的这里我们没有账号密码,所以我们可以使用如下的命令进行迁移
elasticdump --input=http://192.168.31.218:9200/test --output=http://118.195.182.110:9200/test --type=mapping
迁移后如下图:
然后我们回到新的集群里面,查看索引是否成功的进行了迁移
可以看到mapping已经成功的迁移过来了。
3、迁移数据
最后我们执行最重要的一步,就是做数据迁移。这里的数据迁移,我们使用elasticsearch-dump迁移的语法是:
elasticdump --input=http://"<UserName>:<YourPassword>"@<YourEsHost>/<YourEsIndex> --output=http://"<OtherName>:<OtherPassword>"@<OtherEsHost>/<OtherEsIndex> --type=data
我们还是一样没有设置账户名和密码,所以可以使用如下的命令进行迁移
elasticdump --input=http://192.168.31.218:9200/test --output=http://118.195.182.110:9200/test --type=data
迁移如下图:
这里整个数据迁移会比较慢一点,等待迁移成功的时候,我们就可以在新集群里面看到对应的数据了
备注:
1、使用elasticsearch-dump工具在最后的迁移数据部分比较慢。如果用这种方法,再数据量比较大的情况下,可以使用nohup脚本进行迁移。
2、我们可以看到迁移的数据是100条100条的迁移,比较慢的话,我们可以添加--limit=参数,添加后就会按照我们limit的结果进行迁移,如下图:
还没有评论,来说两句吧...