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
原文地址:https://www.cnblogs.com/xiaolang666/p/14077743.html