MySQLの定期的バックアップ(cron)

  • 投稿日:
  • by

このブログは、MovableTypeを使用していますが、
データベースは、「MySQL」を使用しています。

そこで、「cron」を使っての定期的バックアップの方法を紹介したいと思います。

さらに、ただバックアップをしていては、ディスクスペースを食いつぶしていくだけなので、
ローテーションも加味しています。

まず、サーバーで「cron」が使えるということが大前提です。



以下のようなスクリプトを作成します。

#!/bin/sh

# バックアップで残しておく日数
keepday=14

# バックアップするディレクトリ
dest=/****/backup-mysql

# MySQLのダンプ処理(とりあえず一時ファイルとして保存)
/usr/local/mysql/bin/mysqldump -u root --password='パスワード' --opt データベース名 > /*****/backup-mysql/temp


# 改めてバックアップ元ファイルとして指定
srcfile=/****/backup-mysql/temp

# タイムスタンプの取得
timestamp=`date +%Y%m%d`
old_date=`date "-d$keepday days ago" +%Y%m%d`

bkfile=$dest/$timestamp.tar.gz

tar zcvf $bkfile $srcfile
# > /dev/null 2>&1

if [ $? != 0 -o ! -e $bkfile ]; then
echo "backup faild -- ($srcfile)"
exit 1
fi

rmfile=$dest/$old_date.tar.gz

if [ -e $rmfile ]; then
rm -f $rmfile
fi

rm -f /home2/backup-mysql/temp

以上のファイルに実行権を与え、

/etc/cron.daily/backup-mysql.sh

というような感じで実行します。

もしくは、

# crontab -e

00 03 * * * ./backup-mysql.sh

というように「cron」で定期的に実行するように設定します。


補足ですが、上記の場合、

tar: Removing leading `/' from member names


というようなエラーが出てきますが、
実状は問題ありません。

きちんとバックアップされています。


これって、エラーを出さないようにできますっけ?(^^;)


Unixバックアップ&リカバリ
W. Curtis Preston W・カーティス・プレストン 田和 勝 長原 宏治
オライリー・ジャパン (2001/08/16)
売り上げランキング: 61,462
おすすめ度の平均: 5
5 真の技術
5 システム管理者に必須の書籍

基本からわかるデータのバックアップとリストア
谷岡 康則 インタープログ クロスフィールド
ディーアート (2002/07)
売り上げランキング: 201,214