みなさん、お使いのデータベースのバックアップは大丈夫でしょうか? 今日、紹介するのは私が使っている MySQL のバックアップ用スクリプトです。元はどこかのサイトで見たものなのですが失念してしまいました。指定されたデータベースのダンプを取得した後、gzip でこれを圧縮し、指定された期間を過ぎたバックアップファイルは自動的に削除される仕組みになっています。これを cron を利用して一日に 1 回実行するようにしておくと便利です。
簡単に解説すると、スクリプトは 4 つの部分にわけられます。パラメータを設定する部分、MySQL のダンプを取得する部分、取得したダンプを gzip 圧縮する部分、最後に指定日以前の古いバックアップファイルを削除する部分です。KEEPDAY に設定する値を変えることで、バックアップを残す日数を変更することができます。サーバのディスク容量と相談して適当な値に書き換えて使ってください。
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
KEEPDAY=90
DB_HOST=mysqlX.db.sakura.ne.jp
DB_USER=username
DB_PASS=password
DB_NAME=database
MKFILE=mysql.`date +'%y%m%d'`
GZFILE=$MKFILE.gz
RMFILE=mysql.`date -v -"$KEEPDAY"d +'%y%m%d'`.gz
echo "Dumping to $MKFILE"
mysqldump --host=$DB_HOST --user=$DB_USER --password=$DB_PASS
--hex-blob --quote-names
$DB_NAME
> $MKFILE
echo "Packing to $GZFILE"
if [ -f $GZFILE ]; then
rm -f $GZFILE
fi
gzip $MKFILE
if [ -f $GZFILE -a -f $RMFILE ]; then
rm -f $RMFILE
echo "Removed $RMFILE"
exit 0
fi
さくらインターネットのレンタルサーバ(FreeBSD)で稼動実績があります。