elastic 迁移

es迁移测试工具对比

测试工具 是否成功 环境搭建 迁移版本是否支持 工具地址
Elasticsearch Migration 简单,二进制下载即可用 见工具地址Versions支持 https://github.com/medcl/esm-abandoned
logstash迁移 更新和es对应版本 支持跨版本,logstash5.0
Elasticsearch-Exporter node环境依赖,复杂 https://github.com/mallocator/Elasticsearch-Exporter

小结:对比选择使用esm,logstash辅助。

esm迁移脚本

#!/bin/sh 

dir="/data/apps/opt"
cd $dir

esindex=`curl -s 'http://127.0.0.1:9200/_cat/indices' | grep -e logstash-09* | awk '{print $3}'`

#echo $esindex 

for i in $esindex;

do
	./esm  -s http://127.0.0.1:9200 -x $i  -d http://192.168.1.100:9200 -x $i  -w=5 -b=10 -c 10000

done

migrator-linux-amd64使用参数说明
-s 源es集群地址
-d 目的es集群地址
-x --src_index 源索引名称
-y --dest_index 目的索引名称
-n username:passwd 目的es权限
-w bulk workers (default: 1) 默认为1
-b --bulk_size= bulk size in MB (default: 5) 默认为5MB


screen -R esm

./migrator-linux-amd64 -s http://es_src:port   -d http://es_dest:port -x index_name -y sns_op_feeds -n username:passwd -w=5 -b=10 -c 5000

logstash迁移es数据

migrate-index.conf

input {
    elasticsearch {
        hosts => "http://es_src:port"
        index => "index_name"
        size => 10000
    }
}

output {
    stdout{codec => rubydebug}
    elasticsearch {
        hosts => "http://es_dest:port"
        index => "index_name"
        user => "username"
        password => "password"
    }
}

es保留30的数据

#!/bin/bash
DATE=`date +%Y.%m.%d.%I`
DATA1=`date +%Y.%m.%d -d'-30 day'`
DATA2=`date +%Y.%m.%d -d'-30 day'`
today=`date +%Y%m%d`
dd90=$(date -d'-90 day' "+%Y.%m.%d")

#关闭索引
curl -XPOST "http://localhost:9200/logstash*${DATA1}*/_close?pretty"
#删除索引
curl -XDELETE "http://localhost:9200/logstash*${DATA2}*?pretty

#保持3月的数据
curl -s -XDELETE "http://localhost:9200/logstash-log*$dd90" >> /opt/scripts/clear_es_index/delete_index-${today}.log

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!