iTunes Store(Japan)  HMVジャパン  デル株式会社  トレンドマイクロ・オンラインショップ

PostgreSQLのメンテナンスとバックアップを自動で行う

delicious はてな この記事をクリップ! | 2005年07月19日10:35 | 編集

 昨日尋常ではない位に食べ過ぎてしまい、ホント子供みたいな話ですけど本日、腹痛で死にそうになっております。 正直アカネ、呆れてた(涙)。

そんなこんなですから寝込んでいたんですけど、ふとPostgreSQLのバックアップを自動化しようとパソコンの前にやってきた訳です。 現在の状況では定期的にdataディレクトリーを丸ごとバックアップしているのです(ファイルシステムレベルのバックアップ)。 それはそれで問題無いと思うんですけど、バックアップ中に書き込みがあると整合性が保たれなくなるという問題があるので、いつかはpg_dumpを使ってちゃんとしたバックアップを行いたいな、とは思ってました。

pgAdminでpg_dumpを実行すると実行コマンドも表示してくれるのでありがたいです。 これをそのまま使います。 しかし、DOS窓でこれを実行してもパスワードを求められてしまい、自動化になりません。 そこでpg_hba.confを修正してクライアント認証の仕様を変更します。

pg_hba.confはdataディレクトリー直下にありますのでエディタで開き、



host all all 127.0.0.1 255.255.255.255 trust

とします。 これでローカルエリアからのアクセスはパスワード認証無しで行えます。

これで

pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f "hogehoge.backup" "database"

がバッチで使えるようになるんですけど(ここまで書いて、認証オプションを付ければ良かったのではないかと反省したりもし)、どうせならバックアップの前にVACUUMもしたいな、って話です。

ですのでバッチファイルの中身はこうなります。

@echo off
cd c:\hogehoge\bin
vacuumdb.exe -z -f -z -h localhost -U postgres -p 5432 database-name
pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f "C:hopgehoge\database-name.backup" "database-name"

vacuumdb.exeとpg_dump.exeはPostgreSQLがインストールされたディレクトリーの中のbinディレクトリーにあるので移動し、先にVACUUMを実行します。 そしてpg_dumpを実行し、database-name.backupというバックアップファイルを作る訳です。

私の場合、以前に紹介した.DS_StoreやAppleDoubleを削除する「朝5時のバッチ」にマージしております。 ので、全体としては

@echo off

#.DS_StoreとAppleDooubleをデリる
attrib -r -h .DS_Store /s /d
del .DS_Store /s
attrib -r -h ._* /s /d
del ._* /s

#VACUUMして最適化し、pg_dumpでそのデータベースのバックアップを作る
cd c:\hogehoge\bin
vacuumdb.exe -z -f -z -h localhost -U postgres -p 5432 database-name
pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -v -f "C:hopgehoge\database-name.backup" "database-name"

exit

こうなります。 朝の5時にこれが行われ、その後サーバーのデータ群がごっそり別途バックアップされる、という寸法です。


Search

Archives

Contact

■Administrator
padmacolors@gmail.com

■Akane Miyashita
akane.padma@gmail.com
イラスト、デザインのお仕事を承ります!

フィードメーター - padma colors / 

スカウター : padma colors / 

(C) 1997-2008 padma colors All Rights Reserved. Powered by Movable Type. RSS feed