ES數據備份與恢復


1.安裝npm環境

# 安裝npm(只需要在一個節點安裝即可,如果前端還有nginx做反向代理可以每個節點都裝)
[root@elkstack01 ~]# yum install -y npm
# 進入下載head插件代碼目錄
[root@elkstack01 src]# cd /usr/local/
# 從GitHub上克隆代碼到本地
[root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
# 克隆完成后,進入elasticsearch插件目錄
[root@elkstack01 local]# cd elasticsearch-head/
# 清除緩存
[root@elkstack01 elasticsearch-head]# npm cache clean -f
# 使用npm安裝n模塊(不同的項目js腳本所需的node版本可能不同,所以就需要node版本管理工具)

2.安裝備份工具

[root@db01 ~]# npm install elasticdump -g

3.備份命令
1)備份參數

--input: 數據來源
--output: 接收數據的目標
--type: 導出的數據類型(settings, analyzer, data, mapping, alias, template)

2)備份數據到另一個ES集群

elasticdump \
  --input=http://10.0.0.51:9200/my_index \
  --output=http://100.10.0.51:9200/my_index \
  --type=analyzer
  
elasticdump \
  --input=http://10.0.0.51:9200/my_index \
  --output=http://100.10.0.51:9200/my_index \
  --type=mapping
  
elasticdump --input=http://10.0.0.51:9200/my_index --output=http://100.10.0.51:9200/my_index --type=data

elasticdump \
  --input=http://10.0.0.51:9200/my_index \
  --output=http://100.10.0.51:9200/my_index \
  --type=template

3)備份數據到本地的json文件

elasticdump \
  --input=http://10.0.0.51:9200/student \
  --output=/tmp/student_mapping.json \
  --type=mapping
  
elasticdump \
  --input=http://10.0.0.51:9200/student \
  --output=/tmp/student_data.json \
  --type=data

4)導出文件打包

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\"}}}"

# 幫助文檔:https://github.com/elasticsearch-dump/elasticsearch-dump

4.導入命令

elasticdump \
  --input=./student_template.json \
  --output=http://10.0.0.51:9200 \
  --type=template
  
elasticdump \
  --input=./student_mapping.json \
  --output=http://10.0.0.51:9200 \
  --type=mapping
  
elasticdump \
  --input=./student_data.json \
  --output=http://10.0.0.51:9200 \
  --type=data
  
elasticdump \
  --input=./student_analyzer.json \
  --output=http://10.0.0.51:9200 \
  --type=analyzer

# 恢復數據的時候,如果數據已存在,會覆蓋原數據

5.備份腳本

#!/bin/bash
echo '要備份的機器是:'${1}
index_name='
test
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM