ES迁移——使用reindex

1.背景

因为设备资源的不足,需要将旧业务平台迁移到性能更好的服务器上。相应的ES数据作为业务详情的来源也必须一起迁移。

2.环境

  • 跨集群远程迁移

  • ES版本相同(都是星海安装的)

  • 目的集群数据结构(mapping模板)已同步

3.reindex说明

reindex是ES自带的一个用于迁移数据的api,支持按照分片大小进行分次迁移。远程迁移时要针对ES的配置文件进行修改。

4.迁移过程

修改目的端 es安装目录下的conf/es_config.ini 文件
reindex.remote.whitelist: ["<原机器ip:9200>"]

修改完成后重启es。

注意: 此时两端的防火墙都应该放开ES的端口通信。

迁移语句:

curl -X POST <目的机器ip>:9200/_reindex/ -d '{"source":{"remote":{"host":"http://<源机器ip>:9200","socket_timeout":"60s","connect_timeout":"60s"},"index":"xxx","size":1000},"dest":{"index":"xxx"}}'

此命令需要在目的集群执行。

source中参数为源集群参数,如源集群host,源集群index(index参数)

其中size需要根据一条数据大小进行设置,如果数据偏小可以设置比较大,数据偏大就设置比较小。

5.脚本

本次我们有300+个index,比较难处理,所以使用shell脚本进行自动化执行。

#!/bin/bash                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                               
time1=$(date)                                                                                                                                                                                                                                
echo $time1                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                               
for i in $(cat index_list.txt)                                                                                                                                                                                                          
do                                                                                                                                                                                                                                           
        echo "-------------------------------------------"                                                                                                                                                                                   
        echo $(date)                                                                                                                                                                                                                         
        echo $i                                                                                                                                                                                                                              
        echo "curl -X POST 1.1.1.1:9200/_reindex/ -d '{\"source\":{\"remote\":{\"host\":\"http://1.1.1.2:9200\",\"socket_timeout\":\"60s\",\"connect_timeout\":\"60s\"},\"index\":\"$i\",\"size\":1000},\"dest\":{\"index\":\"$i\"}}'"                                                                                                                                                                                                                                            
        curl -X POST 1.1.1.1:9200/_reindex/ -d "{\"source\":{\"remote\":{\"host\":\"http://1.1.1.2:9200\",\"socket_timeout\":\"60s\",\"connect_timeout\":\"60s\"},\"index\":\"$i\",\"size\":1000},\"dest\":{\"index\":\"$i\"}}"     
        echo "sleep 120s"                                                                                                                                                                                                                    
        sleep 120                                                                                                                                                                                                                            
done

其中index_list.txt为需要迁移的index名称,每行一个

index_list.txt
xxx_20201123
xxx_20201101
xxx_20200927
xxx_20201005
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值