Elasticsearch使用shell腳本數據備份和恢復

1. 備份

#!/bin/bash
currentUser=$(whoami)
if [ "$currentUser" != "root" ];then
	echo "當前用戶爲非root,請切換用戶:${currentUser}"
	exit 1
fi


esDir="/opt/elk/elasticsearch-6.7.0/"	#es安裝目錄
es_backup="/home/gocode/app/backup/elk"	#es備份數據目錄
filename=`date +%Y%m%d%H`               #快照名稱
ipAddress=172.20.32.241                 #IP
backupBeforeDelete=yes                  #備份之前是否刪除舊備份


echo "*******************************"
echo "*       ES備份開始            *"
echo "*******************************"

#當前安裝目錄
currentpath=$(pwd)
echo "**當前安裝目錄:" ${currentpath}

#設置備份目錄
echo "1.設置備份目錄"
echo " * 修改elasticsearch.yml"

#查找配置文件是否存在字符串
if cat ${esDir}/config/elasticsearch.yml |grep "path.repo:" 
then
	#找到
	echo " * elasticsearch.yml無需修改"
else
	#未找到
	#cat elasticsearch.yml |grep "path.repo:"
	#echo "path.repo: ["'${es_backup}'"]">> ${esDir}/config/elasticsearch.yml
	res=`echo $?`
	if [ $res = "1" ]; then
		echo -e "\033[31m修改elasticsearch.yml失敗 \033[0m"
		exit 1
	fi
fi

echo " * 創建ES數據備份目錄以及權限*"
mkdir -p  ${es_backup}
chmod 755 ${es_backup}
chown es:es ${es_backup}
res=`echo $?`
if [ $res = "1" ]; then
	echo -e "\033[31m創建ES數據備份目錄失敗 \033[0m"
	exit 1
fi



#檢測es訪問地址是否有效
esStatus=$(curl -s -m 5 -IL http://${ipAddress}:9200|grep 200)
if [ "$esStatus" != "" ];then
	echo $(date +'%Y-%m-%d %H:%M:%S') "es地址訪問正常:http://${ipAddress}:9200,開始備份數據"
	
	#創建倉庫
	#set -x  #打印上一步命令
	curl -H "Content-Type: application/json" -XPUT 'http://'${ipAddress}':9200/_snapshot/datasvr' -d ' {"type":"fs","settings":{"location":"'${es_backup}'","compress":true}}'
	#set +x
	res=`echo $?`
	if [ $res = "1" ]; then
		echo -e "\033[31m創建倉庫失敗 \033[0m"
		exit 1
	fi
	echo -e " \n創建倉庫成功" 
	
	#刪除快照snapshot_1
	curl -X DELETE "localhost:9200/_snapshot/datasvr/snapshot_1"
	echo -e " \n刪除舊快照snapshot_1成功" 
	
	#創建快照snapshot_1(備份索引)
	curl -H "Content-Type:application/json" -XPUT ''${ipAddress}':9200/_snapshot/datasvr/snapshot_1?wait_for_completion=true' 
	res=`echo $?`
	if [ $res = "1" ]; then
		echo -e "\033[31m 創建快照snapshot_1失敗 \033[0m"
		exit 1
	fi
	echo -e " \n創建快照snapshot_1成功"
else
	echo -e "\033[31m $(date +'%Y-%m-%d %H:%M:%S') es地址訪問異常:http://${ipAddress}:9200 \033[0m"
	exit 1
fi

echo "*******************************"
echo "*       ES備份完成            *"
echo "*******************************"

腳本執行結果: 

2. 恢復

#!/bin/bash
currentUser=$(whoami)
if [ "$currentUser" != "root" ];then
	echo "當前用戶爲非root,請切換用戶:${currentUser}"
	exit 1
fi

ipAddress=172.20.32.241					#IP

echo "*******************************"
echo "*    ES恢復備份開始            *"
echo "*******************************"

#當前安裝目錄
currentpath=$(pwd)
echo "**當前安裝目錄:" ${currentpath}

#檢測es訪問地址是否有效
esStatus=$(curl -s -m 5 -IL http://${ipAddress}:9200|grep 200)
if [ "$esStatus" != "" ];then
	echo " * es地址訪問正常:http://${ipAddress}:9200"
	
	#快照恢復
	curl -H "Content-Type:application/json" -XPOST '127.0.0.1:9200/_snapshot/datasvr/snapshot_1/_restore' 
	res=`echo $?`
	if [ $res = "1" ]; then
		echo -e "\033[31m * 快照恢復snapshot_1失敗 \033[0m"
		exit 1
	fi
	echo -e " \n * 快照恢復snapshot_1成功"
else
	echo -e "\033[31m * es地址訪問異常:http://${ipAddress}:9200 \033[0m"
	exit 1
fi


echo "*******************************"
echo "*    ES恢復備份完成           *"
echo "*******************************"

執行快照恢復腳本運行結果: 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章