手机版
你好,游客 登录 注册
背景:
阅读新闻

Elasticsearch的快照备份

[日期:2019-07-07] 来源:Linux社区  作者:sz-wenbin [字体: ]

该文档适用于备份使用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"

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-07/159251.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款