阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Elasticsearch的快照备份

269次阅读
没有评论

共计 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”

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1960字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中