elasticdump备份迁移ES集群数据——筑梦之路
2023-09-14 09:09:36 时间
#安装基础环境
#1. 下载官方安装包并拷贝到离线机器上,官方下载地址:https://nodejs.org/en/download/ 下载xz文件,解压后是tar文件
#2. 解压文件,相应目录例如/opt/
tar -xf node-v8.1.0-linux-x64.tar
#3. 建立文件链接使npm和node命令到系统命令
sudo ln -s /opt/node-v8.1.0-linux-x64/bin/node /usr/bin/node
sudo ln -s /opt/node-v8.1.0-linux-x64/bin/npm /usr/bin/npm
#4. 检查是否安装成功
node -v
npm -v
#安装elasticdump
#1. 找一个同样环境的联网机器,用来拷贝Elasticdump模块缓存
#2. 安装好npm和node以后,安装elasticdump,执行:
npm install elasticdump -g
#3. 安装完成后输入命令查看缓存目录位置
npm config get cache
#4. 将.npm 打包并拷贝出来,传输到离线机器上,然后执行:
npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false elasticdump
#5. 如果报错上边指令路径不对,执行:
npm install --cache /root/.npm --optional --cache-min 99999999999 --shrinkwrap false elasticdump
#6. 验证
elasticdump --help
#使用
----导出
elasticdump --input=http://13.133.15.5:9200/motorvehicle_20200129 --output=/data3/es_bakup/motorvehicle_20200129.json --size 10
elasticdump --input=http://13.133.15.5:9200/face_20200129 --size 80000 --output=$ | gzip > /data3/es_bakup/face_20200129.json.gz
elasticdump --input=http://13.133.15.5:9200/motorvehicle_20200118 --output=/home/motorvehicle_20200118.json --searchBody '{"query":{"match":{"AlpTime":"20200119000822"}}}'
elasticdump --size 500000 --input=http://13.133.15.5:9200/motorvehicle_20200119 --output=$ | gzip > /home/motorvehicle_20200119.json.gz
elasticdump --input=http://13.133.15.5:9200/motorvehicle_20200118 --output=/home/motorvehicle_20200118.json --searchBody '{"size":20,"query": {"bool": {"must": [{"match":{"fullcarno":{"query":"冀A","operator":"and"}}}]}}}'
------导入
elasticdump --input= /home/es_bakup/motorvehicle_20200128.json --output=http://localhost:9200/motorvehicle_20200128
----------------------------------------------------------------------------------------
第一步.安装Node和Npm
1.下载官方安装包并拷贝到离线机器上 官方下载地址:https://nodejs.org/en/download/ 下载xz文件,解压后是tar文件
2.解压文件:tar -xf node-v8.1.0-linux-x64.tar 相应目录例如/opt/
3.建立文件链接使npm和node命令到系统命令
sudo ln -s /opt/node-v8.1.0-linux-x64/bin/node /usr/bin/node
sudo ln -s /opt/node-v8.1.0-linux-x64/bin/npm /usr/bin/npm
4.检查是否安装成功
node-v
npm-v
第二步 安装Elasticdump
找一个同样环境的联网机器,虚拟机也可以,用来拷贝Elasticdump模块缓存
安装好npm和node以后,npm install elasticdump -g
安装完成后输入命令查看缓存目录位置 npm config get cache
将.npm 打包并拷贝出来
传输到离线机器上输入命令
npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false elasticdump
安装完成
输入 elasticdump --help
导出文件打包
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=$ \
| gzip > /data/my_index.json.gz
备份指定条件的数据
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=query.json \
--searchBody="{\"query\":{\"term\":{\"username\": \"admin\"}}}"
导入数据
elasticdump \
--input=./student_template.json \
--output=http://10.0.0.121:9200 \
--type=template
elasticdump \
--input=./student_mapping.json \
--output=http://10.0.0.121:9200 \
--type=mapping
elasticdump \
--input=./student_data.json \
--output=http://10.0.0.121:9200 \
--type=data
elasticdump \
--input=./student_analyzer.json \
--output=http://10.0.0.121:9200 \
--type=analyzer
备份指定索引的脚本
cat es-bak-index.sh
#!/bin/bash
# 备份集群节点 IP
host_ip=10.0.0.121
index_name='
student
teacher
abc
'
for index in `echo $index_name`
do
echo "start input index ${index}"
elasticdump --input=http://${host_ip}:9200/${index} --output=/data/${index}_alias.json --type=alias &> /dev/null
elasticdump --input=http://${host_ip}:9200/${index} --output=/data/${index}_analyzer.json --type=analyzer &> /dev/null
elasticdump --input=http://${host_ip}:9200/${index} --output=/data/${index}_data.json --type=data &> /dev/null
elasticdump --input=http://${host_ip}:9200/${index} --output=/data/${index}_alias.json --type=alias &> /dev/null
elasticdump --input=http://${host_ip}:9200/${index} --output=/data/${index}_template.json --type=template &> /dev/null
done
导入指定索引
cat es-imp-index.sh
#!/bin/bash
# 导入集群节点 IP
host_ip=10.0.0.121
index_name='
abc
student
'
for index in `echo $index_name`
do
echo "start input index ${index}"
elasticdump --input=/data/${index}_alias.json --output=http://${host_ip}:9200/${index} --type=alias &> /dev/null
elasticdump --input=/data/${index}_analyzer.json --output=http://${host_ip}:9200/${index} --type=analyzer &> /dev/null
elasticdump --input=/data/${index}_data.json --output=http://${host_ip}:9200/${index} --type=data &> /dev/null
elasticdump --input=/data/${index}_template.json --output=http://${host_ip}:9200/${index} --type=template &> /dev/null
done
备份全部索引为文件
cat es-back-all.sh
ES=http://10.0.0.121:9200
ED=/data
mkdir /data -p
for index in `curl -s -XGET $ES/_cat/indices?h=i`
do
# settings, analyzer, data, mapping, alias, template
echo "elasticdump --input=$ES/$index --output=$ED/$index"
elasticdump --input=$ES/$index --output=${ED}/${index}_setting.json --limit=10000 --type=settings --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=${ED}/${index}_analyzer.json --limit=10000 --type=analyzer --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=${ED}/${index}_alias.json --limit=10000 --type=alias --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=${ED}/${index}_template.json --limit=10000 --type=template --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=${ED}/${index}_mapping.json --limit=10000 --type=mapping --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=${ED}/${index}_data.json --limit=10000 --type=data --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
echo ""
done
在线迁移
#!/bin/bash
# 源 ES 集群地址
ES=http://192.168.200.x:9200
# 目标 ES 集群地址
ED=http://192.168.100.x:9200
for index in `curl -s -XGET $ES/_cat/indices?h=i`
do
# settings, analyzer, data, mapping, alias, template
echo "elasticdump --input=$ES/$index --output=$ED/$index"
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=settings --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=analyzer --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=alias --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=template --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=mapping --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
elasticdump --input=$ES/$index --output=$ED/$index --limit=10000 --type=data --searchBody '{"query": { "match_all": {} }, "stored_fields": ["*"], "_source": true }'
echo ""
done
相关文章
- elasticSearch7.x创建索引库,解决高版本es无法使用InetSocketTransportAddress
- Android OpenGL ES(九)绘制线段Line Segment .
- Android OpenGL ES(八)绘制点Point ..
- Android OpenGL ES(六)创建实例应用OpenGLDemos程序框架 .
- OpenGL ES着色器语言之变量和数据类型(一)(官方文档第四章)和varying,uniform,attribute修饰范围
- Android OpenGL ES(六)创建实例应用OpenGLDemos程序框架 .
- Android OpenGL ES(二)OpenGL ES管道(Pipeline) .
- ES6 的功能侦测库 ES-Checker
- MySQL、HBase、ES的特点和区别
- 音视频开发(九):OpenGL ES 绘制平面图形
- Android OpenGL ES(七)----理解纹理与纹理过滤
- 图数据库HugeGraph——这个无非是利用cassandra+ES作为后端来做的图数据库,支持分布式而已,要说性能,肯定是没有原生的neo4j强的
- ES Segment Memory——本质上就是segment中加到内存的FST数据,因此segment越多,该内存越大
- ES业界优秀实践案例汇总
- ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(future超时机制)来实现类似同步调用!因此,ES transport client可以同步调用也可以异步(不过底层的socket必然是异步实现)
- ES搜索排序,文档相关度评分介绍——TF-IDF—term frequency, inverse document frequency, and field-length norm—are calculated and stored at index time.
- ELK专栏之ES内部机制-03