Elasticsearch-数据迁移elasticdump
一、环境信息
主机名 | IP |
elasticsearch-master | 10.10.10.1 |
elasticsearch-slave | 10.10.10.2 |
二、互联网部分
2.1、Nodejs下载安装(master节点)
#官网:Download | Node.js
#下载nodejs包
[root@elasticsearch-master home]# wget -c https://nodejs.org/dist/v16.18.1/node-v16.18.1-linux-x64.tar.xz#解压包
[root@elasticsearch-master ~]# xz -d node-v16.18.1-linux-x64.tar.xz
[root@elasticsearch-master ~]# tar -xf node-v16.18.1-linux-x64.tar#创建软链接
[root@elasticsearch-master ~]# mv node-v16.18.1-linux-x64 nodejs
[root@elasticsearch-master ~]# cd nodejs
[root@elasticsearch-master bin]# ln -s /root/nodejs/bin/node /usr/bin/node
[root@elasticsearch-master bin]# ln -s /root/nodejs/bin/npm /usr/bin/npm
#确认软链是否成功
#验证
[root@elasticsearch-master ~]# elasticdump --version
6.111.0
2.2、安装elasticdump(master节点)
#[root@elasticsearch-master bin]# npm install elasticdump -g
#报错原因是:node的默认安装环境是在国外
#更换为淘宝源
[root@elasticsearch-master bin]# npm config set registry https://registry.npmmirror.com
#查看是否更新成功
[root@elasticsearch-master bin]# npm config get registry
https://registry.npmmirror.com/#继续安装
#[root@elasticsearch-master bin]# npm install elasticdump -g
#创建软链接
[root@elasticsearch-master bin]# ln -s /root/nodejs/bin/elasticdump /usr/bin/elasticdump
#验证
[root@elasticsearch-master bin]# elasticdump --version
6.111.0
四、离线安装(需要先在互联网机器进行安装部署后才可以实现离线安装elasticdump)
4.1、将slave节点当作内网机器进行实验
#将master节点上已部署好的目录进行打包
[root@elasticsearch-master ~]# tar -zcf nodejs.tar.gz nodejs
#拷贝到slave节点并解压
[root@elasticsearch-master ~]# scp -rp nodejs.tar.gz 10.10.10.2:/root/
4.2、解压、创建软链并验证
#[root@elasticsearch-slave ~]# tar -xf nodejs.tar.gz
[root@elasticsearch-slave ~]# ln -s /root/nodejs/bin/node /usr/bin/node
[root@elasticsearch-slave ~]# ln -s /root/nodejs/bin/npm /usr/bin/npm[root@elasticsearch-slave ~]# ln -s /root/nodejs/bin/elasticdump /usr/bin/elasticdump
五、向master节点插入测试数据
1、插入测试数据,可根据下方数据修改索引名称,多导入几条
curl -X POST "10.10.10.1:9200/myindex/_doc" -H 'Content-Type: application/json' -d'
{
"name": "John Doe",
"age": 30,
"about": "I love to go rock climbing"
}'2、查看索引信息
六、迁移数据
方法1:单条迁移
elasticdump \
--input=http://10.10.10.1:9200/my_test \
--output=http://10.10.10.2:9200/my_test \
--type=data \
--limit=1000
验证:
方法2:集群迁移
#先导出所有索引名称
curl http://10.10.10.1:9200/_cat/indices?v |awk '{print $3}' >/root/es_migrate.txt
#集群迁移脚本(该脚本包括了迁移settings、analyzer、Mapping、data),可按需修改
vim qianyi.sh
#!/bin/bash
# 读取文件
file="/root/es_migrate.txt"
for line in $(cat $file); do
elasticdump \
--input=http://10.10.10.1:9200/$line \
--output=http://10.10.10.2:9200/$line \
--type=settings \
--limit=4000
elasticdump \
--input=http://10.10.10.1:9200/$line \
--output=http:/10.10.10.2:9200/$line \
--type=analyzer \
--limit=4000
elasticdump \
--input=http://10.10.10.1:9200/$line \
--output=http://10.10.10.2:9200/$line \
--type=mapping \
--limit=4000
elasticdump \
--input=http://10.10.10.1:9200/$line \
--output=http://10.10.10.2:9200/$line \
--type=data \
--limit=4000
echo "正在迁移: $line" >>/root/migrate.log
done < "$file"
#授权脚本
chmod 755 qianyi.sh
#执行迁移脚本,执行前可以将slave端的索引全部删除掉
sh /root/qianyi.sh
#slave端验证执行结果