1. overseas*fun
  2. column
  3. インターネット
  4. MySQLのCRON自動バックアップ

overseas*fun

MySQLのCRON自動バックアップ

Movable Type本体の管理画面にもバックアップ機能は付いているが、つい忘れがち。そんな物臭な私向きなのが、指定された日時にプログラムを実行するCRON機能を使ってのMySQLバックアップファイルの自動作成。

設定可能なレンタルサーバー

「CRON」を使えるかどうかがポイント。

自分メモ

ネット検索すると幾つかの方法が見付かるが、毎日上書きするのではなく、日別にファイルを作成してくれるタイプが安心かも。旅行などで留守にしている間にデータベースが飛んだりした場合、肝心のバックアップファイルが使い物にならなかったら話にならない。

1. backup.sh ファイルを作成
以下は例としてユーザー名「overseas」、パスワード「fun」などにしてあるので、太字部分を適宜変更。TeraPadなどのテキストエディタを使い、文字コード「UTF-8」、改行コード「LF」、拡張子「sh」で保存。

#!/bin/sh

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

KEEPDAY=30
TODAY=`date +'%y%m%d'`
DBDUMP_FILE=mysql.$TODAY
RMFILE=mysql.`date -v -"$KEEPDAY"d +%y%m%d`.gz
HOME_DIR=/home/overseas
BACKUP_DIR=$HOME_DIR/backup

cd $BACKUP_DIR

mysqldump -Q --host=mysql999.db.sakura.ne.jp \
--user=overseas --password=fun overseas >\
$DBDUMP_FILE

gzip $DBDUMP_FILE >/dev/null 2>&1

if [ $? != 0 -o ! -e $DBDUMP_FILE ]; then
echo "SUCCESS! MAYBE!"
rm -f $RMFILE
exit 0
fi

2. サーバーにアップ
さくらインターネットならば「www」内ではなく、その上のホームディレクトリ直下、shファイルに書き込んだ通りの「/home/overseas」の階層が吉。「www」だとウェブ上から見ることが出来るらしい? テキストモードで転送し、アクセス権を「705」または「755」にする。
3. サーバー上にディレクトリを作る
shファイルと同じ「/home/overseas」の階層に、「backup」という名称のディレクトリ(フォルダ)を新たに作っておく。30日分のファイルがここに保存されることになる。
4. CRONを設定
さくらインターネットならば、レンタルサーバーのコントロールパネルにログイン。メニュー「CRONの設定」から「新規項目を追加」。時刻などの入力数字は勿論任意で。

実行コマンド「/home/overseas/backup.sh」
実行日時は上から「*」「*」「23」「59」
実行日時の曜日はチェックを入れず
コメントは「MySQLバックアップ」

上記だと自動バックアップが成功する度、毎日23時59分以降にメールが届く。メール不要の場合の実行コマンドは

/home/overseas/backup.sh 1> /dev/null

後は「backup」ディレクトリに毎日ファイルが作成されていればOK! ……ではなく、MT本体でのバックアップも面倒がらずに行いましょう(汗)。

info

date
modified on December 22, 2008 

related entries

1 trackback

  • muneto.murakami.biz Weblog
    これでうまく動作したのですが、バックアップデータのフィールドのコメントがutf-8で、レコードがEUCだったようで、なにやら文字化けします。。。以下のようにオプションを追記したら文字化けが改善...

当記事「MySQLのCRON自動バックアップ」と関連する内容を掲載している頁からのトラックバックを歓迎致しております。当サイト、貴サイト様共に、更新から日が経った古い記事でも構いません。

トラックバックされる場合は参照元としての当記事の紹介、及びリンクをお願い致します。管理人が承認後、左メイン欄の下部に掲載します。

リンク用タグ(参考)
トラックバックURL

MySQLのCRON自動バックアップ」への専用コメントフォームです。コメント欄以外の入力は任意、内容は公開されませんので、お気軽にどうぞ。更新履歴頁内にてお返事させて頂きます。

form