一、数据的备份和恢复
1.1安装es-dump
第一步:下载node依赖包
官网下载地址:nodejs.org
Download | Node.js
node-v10.16.3-linux-x64.tar.xz
第二步解压部署软件
tar xf node-v10.16.3-linux-x64.tar.xz -C /opt/node
mv node-v10.16.3-linux-x64 node
echo "export PATH=/opt/node/bin:$PATH" >> /etc/profile
source /etc/profile
npm -v
node -v
第三步:指定使用国内淘宝npm源
npm install -g cnpm --registry=https://registry.npm.taobao.org
第四步:安装es-dump
cnpm install elasticdump -g
1.2.备份命令
1)命令参数
# 常用参数
--input:数据的来源地址或者文件
--output:数据导入或到处的目标
--type:备份的数据的类型(settings, analyzer, data, mapping, alias, template)
2)备份ES数据到另一台ES
elasticdump
--input=http://production.es.com:9200/my_index
--output=http://staging.es.com:9200/my_index
--type=analyzer
elasticdump
--input=http://production.es.com:9200/my_index
--output=http://staging.es.com:9200/my_index
--type=mapping
elasticdump
--input=http://production.es.com:9200/my_index
--output=http://staging.es.com:9200/my_index
--type=data
3)备份ES数据到json文件
elasticdump
--input=http://production.es.com:9200/my_index
--output=/data/my_index_mapping.json
--type=mapping
elasticdump
--input=http://production.es.com:9200/my_index
--output=/data/my_index.json
--type=data
4)导出ES数据并打包
elasticdump
--input=http://production.es.com:9200/my_index
--output=$
| gzip > /data/my_index.json.gz
5)指定条件进行备份
elasticdump
--input=http://production.es.com:9200/my_index
--output=query.json
--searchBody="{"query":{"term":{"username": "admin"}}}"
4.导入命令
1)导入json文件到ES
elasticdump
--input=./alias.json
--output=http://es.com:9200
--type=alias
# 注意:导入数据时,如果已存在相同的数据,会覆盖原来的数据,如果不存在则无影响
5.备份脚本
#!/bin/bash
echo '要备份的机器是:'${1}
index_name='
test_2020-11-30
student
linux7
'
for index in `echo $index_name`
do
echo "start input index ${index}"
elasticdump --input=http://${1}:9200/${index} --output=/data/${index}_alias.json --type=alias &> /dev/null
elasticdump --input=http://${1}:9200/${index} --output=/data/${index}_analyzer.json --type=analyzer &> /dev/null
elasticdump --input=http://${1}:9200/${index} --output=/data/${index}_data.json --type=data &> /dev/null
elasticdump --input=http://${1}:9200/${index} --output=/data/${index}_alias.json --type=alias &> /dev/null
elasticdump --input=http://${1}:9200/${index} --output=/data/${index}_template.json --type=template &> /dev/null
done
6.导入数据脚本
#!/bin/bash
echo '要导入的机器是:'${1}
index_name='
test
student
linux7
'
for index in `echo $index_name`
do
echo "start input index ${index}"
elasticdump --input=/data/${index}_alias.json --output=http://${1}:9200/${index} --type=alias &> /dev/null
elasticdump --input=/data/${index}_analyzer.json --output=http://${1}:9200/${index} --type=analyzer &> /dev/null
elasticdump --input=/data/${index}_data.json --output=http://${1}:9200/${index} --type=data &> /dev/null
elasticdump --input=/data/${index}_template.json --output=http://${1}:9200/${index} --type=template &> /dev/null
done