ファイアバードでmysqlの自動バックアップを1ヶ月分保存する

公開日| 2011年5月27日   更新日| 2012年9月14日   コメントはありません。

前回の ファイアバードに WordPressをインストールしてみた で、 ファイアバードファイアバード にWordpressをインストールしてみました。
Wordpressでアップデートをしていく場合、データベースのバックアップは欠かせませんね。

今回は、そのWordpressのデータベース MySQL の自動バックアップをやってみたいと思います。

やることは簡単です。

  • mysqldumpコマンドを実行してSQLバックアップを作成する。
  • SQLバックアップが30日(1ヶ月)を超えたものは削除する。


これをシェルスクリプトで実現して、cron(クーロン)に1日1回で登録すればOKです。

では、早速、やってみましょう。

MySQLのバックアップ処理を行うシェルスクリプトを作成する

UNIX系のシェルスクリプトを書いたことの無い方は、少し勉強が必要かもしれません。
ここでは、Bシェルを使って(Windowsのバッチと同じようなもの)MySQLのバックアップ処理を行ってみましょう。

ファイアバードに WordPressをインストールしてみた でも使いましたが、ここでもPHP Shellを使います。
動作確認のためにもPHP Shellがあると非常に便利です。


Bシェルスクリプトの書き方は、以下のような感じです。

#!/bin/sh
echo 'TEST'

先頭行には、以降に記述する内容を/bin/shで実行しなさい・・という意味です。
つまり、/bin/shがBシェルの実体です。

次のechoは、Windowsのバッチファイルで使うechoと同じで出力するための命令ですね。

Windowsのバッチファイルがわかるなら、Bシェルもそんなに難しくないと思います。

Bシェルについては、これぐらいにして、本題に戻りましょう。
以下が、その例です。

#!/bin/sh

DBUSER=your_db_user_name
DBNAME=your_db_name
DBPASS=your_db_user_name_password
DBHOST=mysql_host_ip_or_name
MYSQLPATH=/usr/bin
REMOVEPATH=/bin
GZIPPATH=/bin

OUTPUTDIR=/home/your_ID/your_domain_name/public_html/backup/
OUTPUTFILE=`date +%Y_%m_%d`.sql
REMOVEFILE=`date -d "-30 day" +%Y_%m_%d`.sql.gz

$REMOVEPATH/rm -f "$OUTPUTDIR$OUTPUTFILE"
$REMOVEPATH/rm -f "$OUTPUTDIR$OUTPUTFILE.gz"
$MYSQLPATH/mysqldump --default-character-set=utf8 --host="$DBHOST" --user="$DBUSER" --password="$DBPASS"  "$DBNAME"  > "$OUTPUTDIR$OUTPUTFILE"
$REMOVEPATH/rm -f $OUTPUTDIR$REMOVEFILE

$GZIPPATH/gzip "$OUTPUTDIR$OUTPUTFILE"

この記述で、

  • mysqldumpコマンドを実行してSQLバックアップを作成する。
  • SQLバックアップが30日(1ヶ月)を超えたものは削除する。

の2つの処理を行っています。
また、最後にSQLで出力されたファイルをgzipで圧縮しています。

もしも上記シェルスクリプトイメージを使う場合は、以下の項目を自分用にカスタマイズして使ってください。

設定箇所 解説
DBUSER=your_db_user_name データベースのユーザ名
を指定してください。
DBNAME=your_db_name データベース名
を指定してください。
DBPASS=your_db_user_name_password データベースのユーザのパスワード
を指定してください。
DBHOST=mysql_host_ip_or_name データベースのホスト名あるいは、IPアドレス
を指定してください。
MYSQLPATH=/usr/bin mysqldumpコマンドのあるパス(フルパス)
を指定してください。
※PHP Shell で、which mysqldumpと入力しパスを調べておきましょう。
REMOVEPATH=/bin rmコマンドのあるパス(フルパス)
を指定してください。
※PHP Shell で、which rmと入力しパスを調べておきましょう。
GZIPPATH=/bin gzipコマンドのあるパス(フルパス)
を指定してください。
※PHP Shell で、which gzipと入力しパスを調べておきましょう。
OUTPUTDIR=/home/your_ID/your_domain_name/public_html/backup/ 出力先パス(フルパス)
を指定してください。

少なくとも、
your_ID : ファイアバードのユーザID
は、設定しないといけません。
それ以降は、好きなところでOKですが、公開されているディレクトリ(public_html)以降でないとFTPなどでダウンロードはできません。
出力先ディレクトリは、公開されているディレクトリ(public_html)以降がダウンロードする際は便利ですが、少なくとも、そのディレクトリは、非公開の設定をしておきましょう。
※何も設定しなければ、誰でもダウンロードできてしまいます。

非公開にするには、以下の.htaccessを上記の例で言えば、…/public_html/backup/直下に置けばOKです。
Deny from all
先にディレクトリ、あるいはディレクトリ配下のファイルへウェブブラウザからアクセスしたら、403 Forbidden エラーが表示されるはずです。

シェルスクリプトをcron(クーロン)に登録する

先に作成したシェルスクリプトをcron(クーロン)に登録しますが、その前に動作確認をしておきましょう。
作成したシェルスクリプトをFTPでアップロードします。
そのとき、必ず、シェルスクリプトファイルに実行権(ファイルパーミッションを705に変更)を与えてください

後は、PHP Shellでフルパス指定で実行すればOKです。
実行後に、出力先ディレクトリに日付.sql.gz(例: 2011_04_29.sql.gz)の名前のファイルが作成されればOKです。

もし、ちゃんと作成されないようなら、スクリプトの設定内容を確認しましょう。

設定を終えたら、cron(クーロン)に登録することで毎日自動実行するようにします。

ファイアバードでcron(クーロン)に登録するには、ユーザ専用ページでログインした後、以下の作業を行います。

  1. まずは、ファイアバードのアカウント管理ツールへログインする

    ファイアバードのホームページからログインします。画面左上の [ ログイン ] をクリックします。
    ファイアバード

    以下のログイン画面から、登録しているメールアドレス、パスワードを入力し、 [ ログイン ] をクリックします。
    ファイアバードログイン


  2. 次に、サーバー管理ツールへログインする

    以下のアカウント管理画面から、サーバー管理画面へ移動するために、 ログイン 列 の サーバー管理ツール リンクをクリックします。
    ファイアバードサーバー管理ツール


  3. 画面左メニューから [ Cron設定 ] をクリックします。

    ファイアバードサーバー管理ツールCron設定

    画面上部の[ CRON追加 ] をクリックします。
    ファイアバードサーバー管理ツールCron追加
    ここで、以下の項目を設定します。

    0~59で指定します。

    0~23で指定します。*で毎時間となります。

    1~31で指定します。*で毎日となります。

    1~12 または jan~dec で指定します。
    *で毎月となります。

    曜日

    0~7 または sun~sat で指定します。
    (※0及び7は日曜日を指します)
    *で毎日(曜日指定なし)となります。

    コマンド

    実行するコマンドをフルパス(絶対パス)で指定します。

    例) /home/(サーバーID)/(ドメイン名)/public_html/…

    コメント

    任意でご記入ください。


    設定を終えたら、[ 確認画面 ] をクリックします。

    以下の確認画面が表示されますので、[ 確定する ] をクリックします。
    ファイアバードサーバー管理ツールCron確認


  4. 次にエラー通知先のメールアドレスを設定します。

    これは、cronで何かエラーが発生した際にメールで知らせてくれる機能で、もしも先のスクリプトで何かエラーがあれば、そのエラー内容を登録してメールアドレスへ通知してくれます。

    画面上部の[ 通知先設定 ] をクリックします。
    ファイアバードサーバー管理ツールCron通知先
    ここで、メールアドレスを設定し、[ 確認画面 ] をクリックします。
    ファイアバードサーバー管理ツールCron通知先確認

    確認画面が表示されますので、[ 確定する ] をクリックし、完了です。


    もしもエラーが発生した場合、以下のようなエラーメールが来ます。
    エラーメール
    このエラー内容は、gzipを実行したけどファイルがなかった・・・というエラーです。
    全て英文なのでスパムメールにならないように気をつけておきましょうね。
最後に、指定した時間に実行されているかチェックしましょう。
作成されたファイルの日時を確認すればOKですね。

ファイアバードを試してみたい方は、こちらファイアバードへ からどうぞ。



コメント

口コミ・評判を投稿 :

ブラウザの JavaScriptが無効となっている場合、コメントの投稿はできません。
コメントを投稿するには、JavaScriptを有効にしてください

お名前 *

メールアドレス *
(口コミ・評判欄には、表示されませんが入力が必要です。)

サイトアドレス



  • はてなブックマークへ追加する
  • Facebookでシェアする
  • twitter でつぶやく
  • Google Plusでシェアする
  • Pocketでシェアする
ページトップへ