さくらサーバーのMySQLをcronで自動バックアップする方法


さくらレンタルサーバーでmysqlのデータを自動でバックアップする為のcron設定方法メモです。
サーバー上ファイルのバックアップは常日頃から行っていてもDBのバックアップまで手が回らないのが本音です。
ちょっとした操作ミスや障害でDBが吹っ飛んだことを想像したら、とても怖いのでセキュリティと同時進行で自動バックアップの設定を行ってしまおうと思います。

SPONSORED LINK

DBのバックアップ環境を作る

まずは、どこにバックアップを作って、どのタイミングで、どれだけのスパンでDBを自動保存するかを考えながら以下の設定を行っていきます。

1.ホームディレクトリにdb_backupフォルダを作成

まずは、バックアップ先として/home/直下に「db_backup」というフォルダを作ります。
もちろん任意のフォルダ名で構いませんが、これからの解説はdb_backupを前提にすすめます。

2.シェルスクリプトdb_backup.shをホームディレクトリに作成

このファイルはcronで定期的に走らせるプログラムになります。
この記述さえ間違わなければ今回の作業の大半は終わったも同然ですね。

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
KEEPDAY=[■残したい個数3なら3日分]
TODAY=`date +'%y%m%d'`
DBDUMP_FILE=mysql.$TODAY
RMFILE=mysql.`date -v -"$KEEPDAY"d +%y%m%d`.gz
HOME_DIR=/home/[■]
BACKUP_DIR=$HOME_DIR/db_backup/
cd $BACKUP_DIR
mysqldump-4.0 -Q --host=mysql[■].db.sakura.ne.jp \
--user=[■ユーザーネーム] --password=<[■DBパスワード] [■DBネーム] >/home/[自分の環境に合わせる]/db_backup/\
$DBDUMP_FILE
gzip /home/[■]/db_backup/$DBDUMP_FILE >/dev/null 2>&1
if [ $? != 0 -o ! -e $DBDUMP_FILE ]; then
echo "SUCCESS"
rm -f $RMFILE
exit 0
fi

■や[]の箇所を自分用に書き換えて下さい。
そして、このdb_backup.shのパーミッションは705に変更しましょう。

3.cronの設定

毎日定時に

/home/ユーザー名/db_backup.sh > /dev/null

を実行。

お疲れ様でした。
これで毎日最新のDBが丸ごとバックアップされます。

4.上記方法でエラーが吐かれる現象について

もしも上記のシェルスクリプトがエラーを吐く場合の対処方法です。
エラー文:

mysqldump: Error: 'You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT DISTINCT LOGFILE_GROUP_NAME FROM INFORMATION_SCHEMA.FILE' when trying to dump tablespaces

対処方法:
MySQLのバージョンによってコマンド記述を適切な物に変更しなければなりません。
×mysqldump ⇒ mysqldump-4.0
※現在は上記のコードも最新Verに修正してあります。

さくらのレンタルサーバで mysql コマンドは使えますか?

使用可能です。
なお運営されているデータベースのバージョンによってコマンドが異なります
※データベースのバージョンを選択できないサーバに関しましてはMySQL5系と
 同じコマンドとなります

MySQL5系 MySQL4系
mysql mysql-4.0
mysqldump mysqldump-4.0
mysqlimport mysqlimport-4.0
mysqlshow mysqlshow-4.0
mysql_config mysql_config-4.0

さくらのレンタルサーバで mysql コマンドは使えますか?|さくらインターネット公式サポートサイト
自分のMySQLのバージョンに合わせてコマンドが変わることに注意しましょう。

Cronで自動で走ってくれるので楽々ですね。しかし自動という響きはなぜここまで人を魅了するのでしょう。

まとめ

WordPressの普及などでMySQLに保存するデータもかなりの財産になってきていますよね。このデータを毎回手動でバックアップすることを考えるとかなり面倒ですが、Cronで毎日自動で動いてくれればかなり便利に使えそうですね。
できれば、このデータを復元する機会はゼロであってほしいものです。

今日も知識欲は止まらない。

SPONSORED LINK
トップへ戻る