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 "*******************************"
執行快照恢復腳本運行結果: