phpMyBackupProによるMySQLデータベースの自動バックアップ
公開日:2014年3月18日
最終更新日:2014年7月13日
Webサイトを運用するには、データベースも定期的にバックアップしなければなりません。
MySQLを自動でバックアップしてくれるツール「phpMyBackupPro」をサーバーへ設置する方法を解説します。
WordPressではMySQLデータベースを自動でバックアップしてくれるプラグインがありますが、CMSを利用しない一般サイトのデータベースは他の方法を取らざるを得ません。
phpMyBackupProは、簡単な設定でMySQLデータベースを自動バックアップしてくれるツールです。
バックアップするSQLファイルは、
1.サーバー内の任意のディレクトリに保存
2.他サーバーへFTP転送
3.メールの添付ファイルとして送信
と3つの方法をとることが可能です。
バックアップスクリプトをサーバーのcronに登録すると、定期的な自動バックアップも実現できます。
【コンテンツ】
【記事執筆時の確認環境】
レンタルサーバー:Xserver
PHP 5.3.3
MySQL 5.0.95
インストールと使用準備
下記サイトにアクセスして、最新版をダウンロードします。
http://www.phpmybackuppro.net/download.php
なお、ダウンロードサイトでは、英語以外の言語に対応する「language files」もダウンロードできるのですが、記事執筆時点では日本語ファイルはありません。
ダウンロードしたファイルを解凍して、「phpMyBackupPro」フォルダをサーバーの公開ディレクトリ(ドキュメントルート)の直下にアップロードします。
ダウンロードしたファイルに含まれている「INSTALL.txt」を読んでみると、「global_conf.php」と「exportディレクトリ」はセキュリティの理由から他のディレクトリに移すことが推奨されています。
そこで、その通りにします。
「global_conf.php」と「exportディレクトリ」の移動
ドキュメントルートと同じ階層に、「files」というディレクトリを作って、その中に移動することにします。
「filesディレクトリ」以下のパーミッションは'777'に変更します。
移動する場所は任意ですが、セキュリティを高めるなら公開ディレクトリの外が望ましいです。
公開ディレクトリの外にディレクトリを作ることのできないサーバーでは、デフォルトの場所のままで構いません。
ただし、「global_conf.php」と「exportディレクトリ」のパーミッションは'777'にしてください。
なお、exportディレクトリはバックアップデータの保存先となるのですが、アクセスできるところなら場所や名称は自由に決められます。
次のステップでは、そのパスを設定します。
「definitions.php」の修正
ファイルを開き、30行目あたりにある「global_conf.php」と「exportディレクトリ」へのパスを変更します。
パスはdefinitions.phpからの相対パスです。
今回の例では、以下のように変更します。
1 2 |
$_PMBP_GLOBAL_CONF="../../files/global_conf.php" $_PMBP_EXPORT_DIR="../../files/export/" |
これでphpMyBackupProを使用する準備ができました。
データベース情報の設定
ブラウザで下記アドレスにアクセスします。
http://ドメイン名/phpMyBackupPro/config.php
【注意!】
次回から管理画面にログインするのに、「http://ドメイン名/phpMyBackupPro/」にアクセスしますが、データベース情報を設定した後にログインしようとすると、MySQLのユーザー名とパスワードを求められます。
この画面でデータベース情報を入力して、[Save data]をクリックします。
データベースへのアクセスが成功したら、「MySQL data is not correct!」の赤文字メッセージは消えます。
手動でサーバー内ディレクトリへバックアップ
この状態で、手動でバックアップしてみます。
バックアップデータは、exportディレクトリへ保存されます。
画面メニューの[backup]をクリックします。
バックアップするデータベースを選択して、[Backup]ボタンをクリックします。
データベースは複数選択することも可能です。
バックアップが成功したら、下記のようなメッセージが表示されます。
他サーバーへFTP転送でバックアップ
他サーバーへFTP転送する設定をします。
画面メニューの[configuration]をクリックします。
[FTP settings]のところで、[save backups via FTP?:]にチェックを入れ、バックアップするFTPサーバーの情報を入力します。
[FTP path]には、他サーバー内でバックアップデータ格納用に任意で作成したディレクトリのパスを入力します。
[Save data]をクリックしてデータをセーブします。
[backup]メニューから手動でのバックアップを実行してみると、
「File succesfully uploaded as ファイル名」と表示され、
FTP転送によるバックアップが成功したことがわかります。
メール添付ファイルでバックアップ
メールの添付ファイルとしてバックアップファイルを送信する設定をします。
画面メニューの[configuration]をクリックします。
[Backup by email]のところで、[use email?:]にチェックを入れ、メールアドレスを入力します。
[Save data]をクリックしてデータをセーブします。
[backup]メニューから手動でのバックアップを実行してみると、
「Files succesfully sent by email to メールアドレス」と表示され、
メール送信によるバックアップが成功したことがわかります。
自動バックアップの設定
phpMyBackupProには、「SHELL MODE」というものがあり、cron設定のコマンドにその書式に従ってジョブを登録すれば、自動バックアップは簡単に実現できます。
SHELL MODEの書式
phpMyBackupProのダウンロードファイルに含まれている「SHELL_MODE.txt」に書かれています。
※英語です
書式の概要は以下になります。
php backup.php db1[,db2,...] 引数1 引数2 引数3 引数4 引数5 引数6 引数7
最初はPHPコマンドのパスです。
次はbackup.phpのフルパスです。
その次にバックアップするデータベース名がきます。複数指定する時はカンマで区切ります。
引数はオプションで指定します。
引数1:テーブルをバックアップするか(1)、しないか(0)
引数2:データをバックアップするか(1)、しないか(0)
引数3:drop tableをバックアップに含めるか(1)、含めないか(0)
引数4:gzipでバックアップするか(1)、しないか(0)
引数5:バックアップしたいディレクトリパスの指定(複数指定可能)
引数6:ディレクトリのバックアップをzipにするか(1)、しないか(0)
引数7:コメント
cronの設定
cronの設定方法はサーバーにより異なりますが、ここではXserverの設定方法を解説します。
Xserverのサーバーパネルにログインして、[Cron設定]をクリックします。
[CRONの追加]をクリックします。
実行させる時間とコマンドを入力します。
例えば、下図では、毎週日曜日の5時30分を指定しています。
cronの書式についてはここでは詳しく説明しませんが、曜日の0は日曜日を示します。
コマンドは以下のように記述します。
1 |
/usr/bin/php5.3 /home/サーバーID/ドメイン名/public_html/phpMyBackupPro/backup.php DB名 1 1 1 1 |
入力したら、[CRONの追加]ボタンをクリックして保存します。
これで自動バックアップする設定がすべて完了しました。
【補足】
サーバーによっては、SHELL MODEによるcron設定がうまくいかないことがあるかもしれません。
その場合は、phpMyBackupProの管理画面でスクリプトを作成し利用する方法があります。
手順の概要は、phpMyBackupProダウンロードファイルの中にある、「SCHEDULED_BACKUPS.txt」を参照してください。
また、当サイトで公開しているマニュアル「Webサイトバックアップ方法」にも説明していますので、そちらを参考にしてください。
スポンサーリンク