#elasticdump迁移工具【适合小数据量】

1、安装node

#下载安装包

wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
tar axf node-v16.14.0-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v16.14.0-linux-x64 /usr/local/node

2、配置环境变量

vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

3、验证是否安装成功

source /etc/profile
node -v
npm -v

4、数据迁移

#迁移索引

elasticdump  --input=http://es_user:密码@192.168.6.8:9200/myj/  --output=http://es_user:密码@192.168.6.9:9200/myj/  --type=mapping

#迁移数据

elasticdump  --input=http://es_user:密码@192.168.6.8:9200/myj/  --output=http://es_user:密码@192.168.6.9:9200/myj/  --type=data  --limit=2000  # 每次操作的objects数量,默认100,数据量大的话,可以调大加快迁移速度

4.1、同es 节点迁移数据到新索引【kibana上面操作】

POST _reindex?wait_for_completion=false  #(加wait_for_completion=false会返回taskID,异步任务,可以用taskID查询任务进度,索引较大时用)
{
"source": {
"index": "myj"
},
"dest": {
"index": "customer"
}
}
GET _tasks/yKWF6mdXSKO5yiygjTn38g:8391454 #查询任务进度

5、备份数据

#导出索引和数据

elasticdump  --input=http://es_user:密码@192.168.6.8:9200/myj/  --output=/home/myj_mapping.json --type=mapping

elasticdump  --input=http://es_user:密码@192.168.6.8:9200/myj/  --output=/home/myj.json --type=data --limit=2000

#导入索引和数据

elasticdump  --input=/home/myj_mapping.json --output=http://es_user:密码@192.168.6.9:9200/myj/  --type=mapping

elasticdump  --input=/home/myj.json --output=http://es_user:密码@192.168.6.9:9200/myj/ --type=data --limit=2000

#ESM迁移工具【适合大数据量】

解析:esm迁移过程原理与elasticsearch-dump类似,区别在于esm使用go语言开发,号称每分钟可以迁移一千万条数据

下载地址:wget https://github.com/medcl/esm/releases/download/v0.7.0/esm-linux-amd64

1、数据迁移

授权:chmod +x esm-linux-amd64

./esm-linux-amd64 -s http://192.168.1.x.:9200 -m 账户:密码 -x "索引名称" -d http://192.168.2.x:9200 -n "账户:密码" -c 10000 -w10 -b=20 -f --refresh

解析:

-s表示读取数据源SOURCE
-d表示将数据源传输到目的地DESTINATION。
-x表示需要复制的索引名称
-q表示指定条件的查询语句
-n表示base认证的用户名和密码
-w表示并发数,默认为1
-b表示buck大小,默认5MB
-f表示复制前删除已有重名索引
–refresh表示完成后再刷新索引

#reindex 数据迁移

说明:

1、elasticsearch集群间迁移数据。
2、索引分片分配不合理,例如数据量太大分片数太少,可通过reindex重建索引
3、索引中存在大量数据的情况下,需要修改索引mapping,可通过reindex复制索引数

步骤:

1、在目的端配置reindex白名单  elasticsearch.yml如下配置【集群,每个节点都需要配置】

#配置源端ES ip白名单迁移数据
reindex.remote.whitelist: "192.168.x.x:30159"  

2、重启集群

3、创建索引结构

4、迁移数据

curl -ues_user:xxx -XPOST "http://10.103.x.x:9200/_reindex?wait_for_completion=false&slices=1" -H 'Content-Type: application/json' -d'
{
"source": {
"remote": {
"host": "http://192.168.x.x:30159",
"username": "elastic",
"password": "xxxxx"
},
"index": "member",
"size": 5000
},
"dest": {
"index": "member"
}
}'

5、检查数据完整性

posted on 2023-12-18 16:12  MhaiM  阅读(363)  评论(0编辑  收藏  举报