0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mysqlのダンプ及びローテーションのシェル

Posted at
#!/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
)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?