♪データがとんだ。賠償賠償ばいしょうちえk
DBがとんだ!というのには色々な理由があると思います。
なんかSQL文がおかしくて、マスターを一括deleteするようなシステムを組んでしまったという場合は悔い改めましょうという感じですが、フリーのCMSツールなんかを導入して、突然データが飛んだら泣きたくもなるし、そもそもユーザーの操作によって消えちゃった!という場合でも、契約書とか納品書とかでしっかり取り決めておかないとイチャモンつけられちゃう、そんな世の中を独り寂しく過ごしている方が急増中だとか(嘘)
まあお仕事目的だろうがプライベートシステムだろうが、DBが飛ぶのは悲しいので、何らかの対応が取れるならば取っておくに越したことはないよね。ということで。
Perlで書いてみました。
PHPのコードが見たかった貴方には非常に申し訳ないとは思っているのですが、基本的にはsystemコマンド投げてるだけなので、応用してくださいませ。
cronで実行する事を考慮して、カレントディレクトリをプログラムのディレクトリに移す為に、File::Basenameを利用していますが、正直、上記サンプルプログラムだけの動作であれば、必要ありません。
「癖で入れちゃいました。」という感じですね。
「甘栗むいちゃいました。」みたいな感じですね。
カレントディレクトリを変更する理由?メリット?はこちら。
保存パスとかを相対パスで書くんだったらやっとけーみたいな。
基本的には、サーバ上でpg_dumpが使える事を前提としていますので、ホスティングサービス等で利用が出来ない場合は、上記の方法では無理です。
そして、郵便番号辞書等のテーブルが入っていたりすると、それだけで馬鹿みたいなファイルサイズになってしまいますので、gzipで圧縮する、という流れが好み。
あとは、バックアップを取るファイル名とかを日付にする等すれば、毎日バックアップ出来るので、バックアップフェチの方々もご満悦(意味不明)
