該文檔適用于備份使用NAS的倉(cāng)庫(kù)類型。所有Elasticsearch集群中的服務(wù)通過(guò)掛載NAS目錄來(lái)存放備份快照數(shù)據(jù)。
1、創(chuàng)建備份倉(cāng)庫(kù)
創(chuàng)建一個(gè)倉(cāng)庫(kù)名稱:backup
curl -H “Content-Type: application/json” -XPUT http://10.10.18.10:9200/_snapshot/backup -d ‘
{
“type”:”fs”,
“settings”:{“location”:”/data/bak_es/snapshot”},
“max_snapshot_bytes_per_sec” : “50mb”,
“max_restore_bytes_per_sec” : “50mb”
}’
提交成功了返回:{“acknowledged”:true} ,在集群所有節(jié)點(diǎn)上創(chuàng)建:/data/bak_es/snapshot 目錄
max_snapshot_bytes_per_sec
當(dāng)快照數(shù)據(jù)進(jìn)入倉(cāng)庫(kù)時(shí),這個(gè)參數(shù)控制這個(gè)過(guò)程的限流情況。默認(rèn)是每秒 20mb 。
max_restore_bytes_per_sec
當(dāng)從倉(cāng)庫(kù)恢復(fù)數(shù)據(jù)時(shí),這個(gè)參數(shù)控制什么時(shí)候恢復(fù)過(guò)程會(huì)被限流以保障你的網(wǎng)絡(luò)不會(huì)被占滿。默認(rèn)是每秒 20mb。
2、查詢備份倉(cāng)庫(kù)
curl -XGET ‘http://10.10.18.10:9200/_snapshot?pretty’
結(jié)果
{
“backup” : { ######倉(cāng)庫(kù)名稱
“type” : “fs”, #倉(cāng)庫(kù)類型
“settings” : {
“location” : “/data/bak_es/snapshot” #備份數(shù)據(jù)存放路徑
}
}
}
3、編寫(xiě)全索引備份腳本
安裝curl
yum -y install curl
腳本名稱:es_backup.sh
#!/bin/bash
#功能:用于備份elasticsearch的全索引快照,保留7天的備份快照。
#7天前的日期
B_DATA=$(date -d “7 day ago” +%F)
#腳本運(yùn)行日志
LOG_FILE=”/tmp/es_backup.log”
#運(yùn)行腳本的當(dāng)前時(shí)間
CUR_TIME=$(date +%F_%H-%M-%S)
#倉(cāng)庫(kù)名稱
STORE_NAME=”backup”
#快照名稱
SNAPSHOT_PRE=”snapshot_all”
SNAPSHOT_NAME=”${SNAPSHOT_PRE}_${CUR_TIME}”
#快照API
Snap_API=”http://10.10.18.10:9200″
#curl的絕對(duì)路徑
CURL_CMD=”/usr/bin/curl”
#生成快照
echo “=====${SNAPSHOT_NAME}=====開(kāi)始快照es” >> ${LOG_FILE}
#執(zhí)行命令后阻塞等快照完成
#${CURL_CMD} -XPUT “${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME}?wait_for_completion=true” >> ${LOG_FILE}
#執(zhí)行命令后立即返回,備份快照會(huì)在后臺(tái)運(yùn)行
${CURL_CMD} -XPUT “${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME}” >> ${LOG_FILE}
echo “=====${SNAPSHOT_NAME}=====結(jié)束快照es” >> ${LOG_FILE}
#刪除7前老的快照
for snap_name in $(${CURL_CMD} -sXGET “${Snap_API}/_snapshot/${STORE_NAME}/_all” | Python -m json.tool | grep ‘”snapshot”:’ | awk -F'[:”,]’ ‘{print $5}’|grep ${SNAPSHOT_PRE} | grep “${B_DATA}”)
do
${CURL_CMD} -XDELETE “${Snap_API}/_snapshot/${STORE_NAME}/${snap_name}”
if [ $? -eq 0 ];then
echo “刪除快照:${snap_name} success” >> ${LOG_FILE}
else
echo “刪除快照:${snap_name} fail” >> ${LOG_FILE}
fi
done
4、查看所有備份全索引的信息
curl -XGET “http:// 10.10.18.10:9200/_snapshot/backup/_all” | python -m json.tool
查看單個(gè)備份全索引的信息
curl -XGET “http://10.10.18.10:9200/_snapshot/backup/snapshot_all?pretty”