运维开发网

ElasticSearch跨集群迁移数据

运维开发网 https://www.qedev.com 2020-09-16 12:39 出处:51CTO 作者:纪仁旺
ES、集群

ES迁移方案:

elasticsearch-dump、logstash、reindex、snapshot方式进行数据迁移,实际上这几种工具大体上可以分为两类:

一、scroll query + bulk: 批量读取旧集群的数据然后再批量写入新集群,elasticsearch-dump、logstash、reindex都是采用这种方式

二、reindex是Elasticsearch提供的一个api接口,可以把数据从一个集群迁移到另外一个集群、网络需要互通、迁移速度一般、

需要在目标ES集群中配置reindex.remote.whitelist参数,指明能够reindex的远程集群的白名单、本地索引更新Mapping实现索引层面迁移,或者跨集群的索引迁移。

snapshot: 直接把旧集群的底层的文件进行备份,在新的集群中恢复出来,相比较scroll query + bulk的方式,snapshot的方式迁移速度最快。

从源 ES 集群通过备份api创建数据快照,然后在目标 ES 集群中进行恢复,无网络互通要求、迁移速度快、运维配置简单、适用于数据量大,接受离线数据迁移的场景

1、通过reindex迁移ES数据

reindex 是ES提供的一个api接口,可以把数据从源ES集群导入到当前ES集群,实现集群内部或跨集群同步数据。

跨集群迁移需要elasticsearch.yml中加上ip白名单,需要在目标ES集群中配置该参数,指明能够reindex的远程集群的白名单,并重启集群。

more /data/elasticsearch/config/elasticsearch.yml
reindex.remote.whitelist: ["10.10.141.251:9200","10.10.141.252:9200"]

说明:能够reindex的远程集群的白名单

跨集群迁移命令操作

#
curl -XPOST "10.10.48.41:9200/_reindex?wait_for_completion=false" -H 'Content-Type: application/json' -d ' {"conflicts":"proceed","source":{"remote":{"host":"http://10.10.141.251:9200","socket_timeout":"8m","connect_timeout":"300s"},"index":"logs-ezr.omcr.productbasic.serverhost-1d200822","size":500},"dest":{"index":"logs-ezr.omcr.productbasic.serverhost-1d200822","op_type":"create"}}'
#

请求10.10.48.41集群把10.10.141.251集群的索引logs-ezr.omcr.productbasic.serverhost-1d20082迁移至10.10.48.41集群新索引名称为logs-ezr.omcr.productbasic.serverhost-1d200822

参数解释

host:源es的ip与端口

socket_timeout:读取超时时间

connect_timeout:连接超时时间

index:源索引名字

size:批量抓取的size大小

query:查询指定条件下的字段

dest:index:当前索引名字

返回task信息

{"task":"-xr72vhcQUW9Z34bLNbChg:117944144"

查询所有task任务

curl "10.10.48.41:9200/_tasks?pretty&actions=reindex&detailed=true"

查询所有任务

curl "10.10.48.41:9200/_tasks?pretty&actions=&detailed=true"

查询单个task任务

curl "10.10.48.41:9200/_tasks/-xr72vhcQUW9Z34bLNbChg:117944144?pretty"

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号