graylog自動化データバックアップスクリプト
4952 ワード
説明
データのバックアップ、リカバリを容易にするために、es_backup.sh
、es_restore.sh
の2つのスクリプトが書かれています.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
使用方法の説明
2つのスクリプトをサーバにアップロードし、実行権限を追加します.$ 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}
≪リカバリ・スナップショット内のすべてのインデックスのリカバリ|Recovery Recovery Snapshot All Index|emdw≫:スナップショット内のすべてのインデックスをリカバリする場合は、スナップショットに含まれるインデックスを事前に閉じる必要があります.次に、次のコマンドを実行します.$ ./es_restore.sh restoreAll {dateTime}
スナップショットで指定したインデックスを復元するには、次の手順に従います.$ ./es_restore.sh restoreAll {dateTime} {yourIndexName1,yourIndexName2}
説明:{}
の内容を置き換える必要があります.
#!/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
#!/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
2つのスクリプトをサーバにアップロードし、実行権限を追加します.
$ 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}
≪リカバリ・スナップショット内のすべてのインデックスのリカバリ|Recovery Recovery Snapshot All Index|emdw≫:スナップショット内のすべてのインデックスをリカバリする場合は、スナップショットに含まれるインデックスを事前に閉じる必要があります.次に、次のコマンドを実行します.
$ ./es_restore.sh restoreAll {dateTime}
スナップショットで指定したインデックスを復元するには、次の手順に従います.
$ ./es_restore.sh restoreAll {dateTime} {yourIndexName1,yourIndexName2}
説明:
{}
の内容を置き換える必要があります.