#!/bin/sh -xeu
# バックアップファイルを何日分残しておくか
period='0'
# バックアップファイルを保存するディレクトリ
dirpath='/home/xxxx/bkup/'
#オブジェクトストレージのバケット名
bucket=s3://xxxx-xxxx
#エラー出力ファイル名
errorfilename="db_bkup_error.txt"
#sqldumpエラーファイル名
sqldumperror="sqldumperror.log"
#conf
conffilename="test_bkup.conf"
#エラー出力
function error
{
echo `date +%Y/%m/%d-%H:%M:%S`":$@" 1>>$errorfilename
}
#エラー出力して処理終了
function abort
{
echo `date +%Y/%m/%d-%H:%M:%S`":$@" 1>>$errorfilename
exit 1
}
#作業フォルダに移動
cd $dirpath
#設定ファイルを読み込み
test -r $conffilename || abort "設定ファイル読込エラー"
. ./$conffilename
for ((i=0; i<${#users[@]}; i++)){
# バックアップするユーザー
backupuser=${users[i]}
# バックアップするスキーマ
backupschema=${schemas[i]}
# バックアップするスキーマパスワード
backuppass=${pass[i]}
# ファイル名を定義
mydate=`date +%Y%m%d%H%M%S`
filename="${backupschema}##${mydate}.sql"
echo $filename
#backup実行
mysqldump --user=$backupuser -p$backuppass $backupschema --single-transaction --default-character-set=utf8mb4 --result-file=$filename --log-error=$sqldumperror
echo "mysqldump完了"
#作成されたファイルを圧縮
gzip $filename || error "gzip error:${filename}"
echo "圧縮完了"
#オブジェクトストレージに転送
s3cmd put $filename.gz $bucket || error "s3cmd put:${filename}"
echo "オブジェクトストレージに転送完了"
}
#カレントから不要なファイルを削除
find . -name '*' | grep `date +'%Y%m%d'` | xargs rm
#オブジェクトストレージから不要ファイル削除
s3cmd ls $bucket | awk '{ print $4 }' | grep `date +'%Y%m%d' --date "${period} day ago"` | xargs s3cmd del
echo "バックアップ完了"
users=(
user1
user2
user3
)
schemas=(
schema1
schema2
schema3
)
pass=(
pass1
pass2
pass3
)