Web2.0ナビ > ウェブ技術 > さくらインターネットでmysqlの自動バックアップ

さくらインターネットでmysqlの自動バックアップ


さくらインターネットのレンタルサーバーは非常に高機能なんですが、バックアップ機能だけはありません。(私が確認する限り。)

HTMLやGIF、PHPなどのファイルはローカルのPCで持っているから大抵は大丈夫だとして、データベース系は間違って全部消してしまった日には目も当てられません。。定期的にバックアップを取るようにしていますが、忘れることもよくあるので、自動バックアップスクリプトをcronに登録しときました。

よくあるスクリプトですが、参考までに張っておきます。3日間分のMYSQLのバックアップデータを保持します。mysqlのID/PWなどは書き換えて下さい。

何もバックアップなんてしてない!という人は、自己責任で使ってみて下さい。

#!/bin/sh

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

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

cd $BACKUP_DIR

mysqldump -Q --host=mysql?.db.sakura.ne.jp \
--user=user_name --password=database_passwd database_name >\
$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

使用手順としては、最初にホームディレクト配下に、backupフォルダを作っておいて、このシェルスクリプトも適当な場所に設置。

次に、さくらインターネットの管理画面>cron設定で、「/home/user_name/シェルスクリプトの場所」を登録すればOKです。1日1回もやっておけばよいでしょう。シェルスクリプトの実行権は705じゃないと、さくらでは動かないのでご注意を。

トラックバック

このエントリーのトラックバックURL:
http://www.web-20.net/mt/mt-tb.cgi/143

コメント

RMFILE=mysql.`date -v -"$KEEPDAY"d +%Y%m%d`.gz
は正しくは
RMFILE=mysql.`date -v -"$KEEPDAY"d +%y%m%d`.gz
です。
期日切れのファイルが削除されませんでした。

>josephさん

ありがとうございます。typoしておりました。お恥ずかしい限りです。早速修正しました。

はじめまして。
シェル作成や、さくらインターネットのCronに関して調べていたところ、訪問させていただきました。

物真似で作成してみたのですが、ちょっとCron自体が動いておりません。

もしお時間が空いているときにでもご教授いただけたら幸いです。

以下のようにサンプルシェルを自分用に変更致しましたが、他に変更点はありますでしょうか?

修正箇所はすべて、<>でくくってあります。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

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

cd $BACKUP_DIR

mysqldump -Q --host=mysql.db.sakura.ne.jp \
--user= --password= >\
$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

また、Cronに設定する際も、実行権限を705にして、

/home//backup.sh

の指定でよろしいでしょうか?

いきなりの質問で大変恐縮です。

すいません、半角の<>内が全て反映されておりませんでした。
全角にして再投稿致しました。

失礼致しました。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

KEEPDAY=3
TODAY=`date +'%y%m%d'`
DBDUMP_FILE=mysql.$TODAY
RMFILE=mysql.`date -v -"$KEEPDAY"d +%y%m%d`.gz
HOME_DIR=<自分のホームディレクトリ>
BACKUP_DIR=$HOME_DIR/<バックアップフォルダのパス>

cd $BACKUP_DIR

mysqldump -Q --host=mysqlDBの番号>.db.sakura.ne.jp \
--user=<ユーザー名> --password=<パスワード> <データベース名(ユーザー名と同じ> >\
$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

Cron設定
/home/<バックアップフォルダまでのパス>/backup.sh

>tomさん

はじめまして。cronが動かないのは、(おそらくですが)明示的にシェル起動を記していないためと思われます。

/bin/sh /home/<バックアップフォルダまでのパス>/backup.sh

で如何でしょうか。

ご返信有難うございます(^.^)

上記を試してみましたが、それでも動いていないみたいです。
そもそも、Teratermでログインし、実行しようとしてもこんな風のエラーが返ってきてしまっているのです。
前にあげたサンプルシェルの変更点は先のコメントで書いた部分の変更点でよろしいのでしょうか?

たびたびお手数お掛け致します。


%/bin/sh backup.sh
: not found
d: Cannot apply date adjustment
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
: not found
/www/<パス>
: not found
mysqldump: not found
--user=<ユーザ名>: not found
: not found5
: not found
backup.sh: 17: Syntax error: Bad fd number

>前にあげたサンプルシェルの変更点は先のコメントで書いた部分の変更点でよろしいのでしょうか?

サンプルシェルは、コメントでご指摘頂いてから修正したので、そのままで動くはずでしたが、環境依存によって動かないのでしょうか?

ちなみに私が利用しているのは「FreeBSD 6.1」というOSのようです。OSのバージョンによってdateのオプション等が違うのでしょうか。

サンプルスクリプトを再度実行してみましたが、特に問題なく動いています。

エラーを見た感じだと、mysqldumpがないというエラーが出ていたりするので、そのあたりも気になります。

which mysqldump

などして、確かめていただけますか?

通常のさくらレンタルサーバーですと、/usr/local/bin/mysqldumpあたりに入っていると思います。

yosukeさん

いつも、ご丁寧なご返答、有難うございます!

mysqldumpの場所はおっしゃるとおりの場所でした。

mysqldumpに限らず、Teratermから簡単なシェルスクリプトを実行しようとしても、not foundえエラーが多発する現象のようです。

yosukeさんのスクリプトではなく、当方環境に問題がありそうですすので、さくらに聞くなり、再度調査してからまた試してみます。

本当に有難うございました。

お力添えできずに、申し訳ありません。環境依存でもなさそうでしたら、またご質問下さい。よろしくお願いします!

はじめまして葱といいます。
sh使わせていただきました。
これいいです(゚∀゚)

多分ですが・・
tomさんが実行できない理由は
改行がLFになっていないか

BACKUP_DIR=$HOME_DIR/home/negi/backup
で指定しているときに
mysqldump -Q --host=mysqlDBの番号>.db.sakura.ne.jp \
--user=<ユーザー名> --password=<パスワード> <データベース名(ユーザー名と同じ> > /home/negi/backup/\
$DBDUMP_FILE

/home/negi/backup/\
が入っていないような気がしました。

gzip /home/negi/backup/$DBDUMP_FILE >/dev/null 2>&1

抜けてました(;´д`)ゞ

コメントを投稿


yosukeのプロフィール

インターネット大好き。(ネット)サーフィンやウェブサービス作成も好き。MixClipsやAddClipsなどいろんなサービスを鋭意作成中../ このブログは2005年に勢いで作成。web2.0(笑)ナビへ名称変更検討中。。(詳しく

執筆本


Web2.0入門書を執筆しました。

WwwSqlDesingerについて記事入稿しました。

あわせて読みたい