MySQLのバックアップ

phpMyBackupProでとってたんだけど、正確に言うと、とってたつもりになってたんだけど、小さいDBはとれるけど、ある程度のサイズ以上の、つまりバックアップの必要性が高いDBのバックアップはとれてないという、なんだこれ!という現象を発見し唖然。
 
phpMyBackupPro自体、評判はいいし、いろんなところで取り上げられているので、十中八九うちの環境の問題だと思うんだけど(メモリが足りないとかパーミッションがなんとかとか)、どこで失敗してるか調べるガッツがたまたまなかったので、ググって「AutoMySQLBackup」というのを見つけてきた。

AutoMySQLBackup

これは1本の shファイルで、なかを見るといろいろできそうだけど、とりあえず使うには、http://kunik.no-ip.com/2007/06/13/2106/install-automysqlbackup.htmlを参考にちょろちょろっとやればOK。

USERNAME=user
PASSWORD=password
DBHOST=localhost
DBNAMES="wpmu wpmu29"
BACKUPDIR="/home/www/backups"

#DATE=`date +%Y-%m-%d_%Hh%Mm`
DATE=`date +%Y-%m-%d_%H%M`
#DOW=`date +%A`
DOW=`date +%w`

DB関係を変えただけだと、日本語UTF-8ロケールなうちの環境では、できるファイルが「wpmu_2010-01-21_19h07m.木曜日.sql.gz」みたいになって、これを解凍するとさらに悲惨なこんなファイル「wpmu_2010-01-21_13h47m.譛ィ譖懈律.sql」ができてしまうので、曜日のところを曜日番号にしてみた。

ちょっとしたこと

でもって、crontab -e で毎日起動にしておいた。

30 0  * * * /home/www/automysqlbackup0.sh  > /dev/null 2>&1
30 12 * * * /home/www/automysqlbackup12.sh > /dev/null 2>&1

実は 0:30と 12:30の2回起動にしたくて、*/12とかで登録したかったんだけど、こいつは賢いことにデイリーバックアップを曜日で持つようになっているので、つまり、ファイルを作成する前にその曜日のファイルを消してしまうので、2回バックアップが起動しても常に最後のやつしか残らないという罠。
やりたいのは、1日2回分を7日分、計14履歴を保持したいんで、曜日で消してるところを「曜日+午前午後」で消すようにすればいいんだけど、dateの%指定に午前午後を数字で返すのがみつからなかったので、ひよって shファイルを分けて、午前と午後を別々のフォルダに書きだすようにしてしまった。
1日4回バックアップとかのニーズがでてきたら、ちゃんとやることにする。