phpMyBackupProというツールを使えばMySQL DBの自動バックアップができそうだったので、やってみた。
本家 http://www.phpmybackuppro.net/ からZIPファイル(phpMyBackupPro-2.5.zip)をダウンロード。
公式の日本語化ファイルは用意されていないようだが、まあなくても大丈夫だろう。
unzipしてサーバーへ送る。
Webブラウザーから繋いでconfigureすれば使えるようになる。
さらにschedule backupのメニューを使って、バックアップ用のPHPファイルを作成。
作成したバックアップ用のPHPファイルをWebブラウザーからアクセスして、手動でのバックアップができることを確認。
(テストの段階ではバックアップ頻度 Select backup period を都度 At each call に設定しておくとよいだろう。本番運用は1日置きくらいで十分だろう)
と、ここまではググれば参考になるサイトが山ほど見つかるだろう。(なので、説明を省いている)
ここからは、まずは、セキュリティーの話。
global_conf.phpという設定ファイルにMySQLのパスワードが平文で書いてあるので注意が必要。(これはWordPressでも同様)
別のディレクトリーへ設置するというのが定番の方法のようだが、中途半端だと思う。
まずは、.htaccessを使ってBasic認証を設定。
これで他者からのhttp経由のアタックは避けられる。
phpMyBackupProのアップデートを考えれば、別のディレクトリーへ設置するよりもよほど効率的だと思うのだが。
さらに、global_conf.phpのパーミッションをrw------(0600)、exportディレクトリーのパーミッションをrwx------(0700)に変更。
SuEXECな設定がなされているサーバーであればこれは強くお勧め。
こうしておかないと、同じサーバーを使っている他のユーザーに悪意があればかなり容易にパスワードが盗まれてしまう。global_conf.phpをどこに置いたとしても。
最後、自動的に定期的にバックアップ用のPHPファイルを起動する手段を講じる。
サーバーのcronが使えるならば、こんな感じになるだろう。
が、サーバーのcronが使えない場合もあるだろう。
いろいろなやり方があるだろうが、私の場合だと手元のクライアントのLinuxのcronを使ってこんな感じ ↓ で、
1時間おきにwgetでWebサーバーのPHPファイルへアクセスする、ということを行なっている。
もちろんクライアントのLinuxの電源が入っていない場合には動かないが、ほぼ毎日1時間以上は電源を入れるのでこんなもんで実用上は十分だろう。
Windowsならタスクスケジューラーで同じようなことができるはず。