MySQLのダンプを作成するバッチを作り、cronで動かす。
#!/bin/sh
# 他のユーザからバックアップを読み込めないようにする
umask 077
# バックアップファイルを何日分残しておくか
period=2
# バックアップファイルを保存するディレクトリ
dirpath='/root/mysql_dump'
# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
fileSuffix=`date +%y%m%d`
# 古いバックアップファイルを削除
oldfileSuffix=`date --date "$period days ago" +%y%m%d`
function dump()
{
mysqldump --single-transaction -u {ユーザー} -h {ホスト} --password={パスワード} $1 | gzip > $dirpath/$1_$fileSuffix.dump.gz
}
function deleteOld()
{
rm -f $dirpath/$1_$oldfileSuffix.dump.gz
}
function backup()
{
dbName=$1
echo "start $dbName " `date +'%Y/%m/%d %H:%M:%S'`
dump $dbName
deleteOld $dbName
echo "end $dbName " `date +'%Y/%m/%d %H:%M:%S'`
}
echo "***** [$0] start " `date +'%Y/%m/%d %H:%M:%S'` " *****"
backup "{DB名1}"
backup "{DB名2}"
echo "***** [$0] end " `date +'%Y/%m/%d %H:%M:%S'` " *****"
を、保存してcronを設定する。
# mysqldump
0 16 * * * /root/tools/backupDB.sh >> /root/logs/backupDB.log