es 备份与恢复

一、数据的备份和恢复

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
posted @ 2020-12-03 09:32  nick_xm  阅读(530)  评论(0编辑  收藏  举报