graylog自动化数据备份脚本

说明


为了方便备份、恢复数据,写了es_backup.shes_restore.sh两个脚本。

es_backup.sh脚本中涉及到的变量backFilePath(存放备份数据的压缩包目录)需要在使用此脚本之前创建好(脚本中的目录只是范例,可以根据需求更改),storeName(es仓库名称)、storePath(es仓库路径)更改为你的仓库名、仓库路径。
此备份脚本以snapshot_年月日时命名快照,如:snapshot_2018032617,表示2018年03月26日17时创建的此快照。
es_backup.sh

#!/bin/bash
#elasticsearch index backup
dateTime=`date +%Y%m%d%H`
snapshotName="snapshot_${dateTime}"
backFilePath="/home/monitorManager/elasticsearchBackupData/back"
backesFile=es$dateTime.tar.gz
storeName="backup_1"
storePath="/backup"
echo $snapshotName

if [[ $# == 2 ]];then
    case $1 in
        allIndex)
            mkdir $backFilePath/es_dump
            curl -XDELETE $2/_snapshot/$storeName/$snapshotName?pretty
            curl -XPUT "$2/_snapshot/$storeName/$snapshotName?pretty&wait_for_completion=true"
            echo 'Copying files......'
            cp -rf $storePath/* $backFilePath/es_dump
            cd $backFilePath
            tar czf $backesFile es_dump/
            rm -rf $backFilePath/es_dump/
            echo "success"
        ;;
    *)
        echo "Usage:$0 allIndex esHost:esPort"
    ;;
    esac
elif [[ $# == 3 ]];then
    case $1 in
        specialIndex)
            mkdir $backFilePath/es_dump
            curl -XDELETE $2/_snapshot/$storeName/$snapshotName?pretty
            index=$3
            jsonIndex="{\"indices\":\"${index}\"}"
            curl -XPUT "$2/_snapshot/$storeName/$snapshotName?pretty&wait_for_completion=true" -d ${jsonIndex}
            echo 'Copying files......'
            cp -rf $storePath/* $backFilePath/es_dump
            cd $backFilePath
            tar czf $backesFile es_dump/
            rm -rf $backFilePath/es_dump/
            echo "success"
        ;;
    *)
        echo "Usage:$0 specialIndex esHost:esPort yourIndexName1,yourIndexName2"
    ;;
    esac
fi

es_restore.sh脚本中esNewHost(es迁移目的集群主机)、esNewPort(es迁移目的集群端口)、esNewStorePath(es迁移目的集群仓库目录)、esOldBackPath(源集群仓库目录),需要提前被创建,可根据需求修改。
es_restore.sh

#!/bin/bash
#elasticsearch index restore
dateTime=$2
snapshotName="snapshot_${dateTime}"
backesFile=es$dateTime.tar.gz
storeName="backup_1"
esNewHost="localhost"
esNewPort=9200
esNewStorePath="/home/monitorManager/test"
esOldBackPath="/home/monitorManager/elasticsearchBackupData/back"

if [[ $# == 2 ]];then
    case $1 in
        restoreAll)
            cd $esOldBackPath
            tar -zxvf $backesFile
            rm -rf $esNewStorePath/*
            cp -rf $esOldBackPath/es_dump/* $esNewStorePath
            curl -XPOST "$esNewHost:$esNewPort/_snapshot/$storeName/$snapshotName/_restore?pretty&wait_for_completion=true"
            rm -rf $esOldBackPath/es_dump/ 
            echo "restore success"
        ;;
    *)
        echo "Usage:$0 restoreAll {dateTime}"
    ;;
    esac
elif [[ $# == 3 ]];then
    case $1 in
        restoreSpecial)
            index=$3
            cd $esOldBackPath
            tar -zxvf $backesFile
            rm -rf $esNewStorePath/*
            cp -rf $esOldBackPath/es_dump/* $esNewStorePath
            echo "closing index......"
            curl -XPOST $esNewHost:$esNewPort/$index/_close
            jsonIndex="{\"indices\":\"${index}\"}"
            echo $jsonIndex
            curl -XPOST "$esNewHost:$esNewPort/_snapshot/$storeName/$snapshotName/_restore?pretty&wait_for_completion=true" -d ${jsonIndex}
            rm -rf $esOldBackPath/es_dump/ 
            echo "opening index......"
            curl -XPOST $esNewHost:$esNewPort/$index/_open
            echo "restore success"
        ;;
    *)
        echo "Usage:$0 restoreSpecial {dateTime} {yourIndexName1,yourIndexName2}"
    ;;
    esac
fi

使用说明


将两个脚本上传服务器,添加执行权限:

$ sudo chmod +x es_backup.sh
$ sudo chmod +x es_restore.sh

备份

# 备份所有索引
$ ./es_backup.sh allIndex {esHost:esPort} 
# 备份指定索引
$ ./es_backup.sh specialIndex {esHost:esPort} {indexName1,indexName2}

恢复
恢复快照中所有索引:
恢复快照中的所有索引时,需要提前关闭快照中包含的索引。然后执行如下命令。

$ ./es_restore.sh restoreAll {dateTime}

恢复快照中指定索引:

$ ./es_restore.sh restoreAll {dateTime} {yourIndexName1,yourIndexName2}

说明:{}中的内容需要被替换。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容