共计 1960 个字符,预计需要花费 5 分钟才能阅读完成。
该文档适用于备份使用 NAS 的仓库类型。所有 Elasticsearch 集群中的服务通过挂载 NAS 目录来存放备份快照数据。
1、创建备份仓库
创建一个仓库名称: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},在集群所有节点上创建:/data/bak_es/snapshot 目录
max_snapshot_bytes_per_sec
当快照数据进入仓库时,这个参数控制这个过程的限流情况。默认是每秒 20mb。
max_restore_bytes_per_sec
当从仓库恢复数据时,这个参数控制什么时候恢复过程会被限流以保障你的网络不会被占满。默认是每秒 20mb。
2、查询备份仓库
curl -XGET ‘http://10.10.18.10:9200/_snapshot?pretty’
结果
{
“backup” : {###### 仓库名称
“type” : “fs”, #仓库类型
“settings” : {
“location” : “/data/bak_es/snapshot” #备份数据存放路径
}
}
}
3、编写全索引备份脚本
安装 curl
yum -y install curl
脚本名称:es_backup.sh
#!/bin/bash
# 功能:用于备份 elasticsearch 的全索引快照,保留 7 天的备份快照。
#7 天前的日期
B_DATA=$(date -d “7 day ago” +%F)
# 脚本运行日志
LOG_FILE=”/tmp/es_backup.log”
# 运行脚本的当前时间
CUR_TIME=$(date +%F_%H-%M-%S)
# 仓库名称
STORE_NAME=”backup”
# 快照名称
SNAPSHOT_PRE=”snapshot_all”
SNAPSHOT_NAME=”${SNAPSHOT_PRE}_${CUR_TIME}”
# 快照 API
Snap_API=”http://10.10.18.10:9200″
#curl 的绝对路径
CURL_CMD=”/usr/bin/curl”
# 生成快照
echo “=====${SNAPSHOT_NAME}===== 开始快照 es” >> ${LOG_FILE}
# 执行命令后阻塞等快照完成
#${CURL_CMD} -XPUT “${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME}?wait_for_completion=true” >> ${LOG_FILE}
# 执行命令后立即返回,备份快照会在后台运行
${CURL_CMD} -XPUT “${Snap_API}/_snapshot/${STORE_NAME}/${SNAPSHOT_NAME}” >> ${LOG_FILE}
echo “=====${SNAPSHOT_NAME}===== 结束快照 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
查看单个备份全索引的信息
curl -XGET “http://10.10.18.10:9200/_snapshot/backup/snapshot_all?pretty”
: