zoukankan      html  css  js  c++  java
  • Elasticsearch的快照备份

    该文档适用于备份使用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"
  • 相关阅读:
    Chap5:操作文件和目录[The Linux Command Line]
    ABC3
    ABC2
    ABC
    Spring MVC / Boot
    Usefull Resources
    [ Learning ] Design Pattens
    [ Learning ] Spring Resources
    URL Resources
    [ Windows BAT Script ] BAT 脚本获取windows权限
  • 原文地址:https://www.cnblogs.com/sz-wenbin/p/11103102.html
Copyright © 2011-2022 走看看