PostgreSQLのpgAdminⅢでpgAgentを使って定期バックアップもMEMO。。なんだかなぁ
windows環境でPostgreSQLを動かしているので
GUIで簡単なジョブスケジューリングツール「pgAgent」なるものを
pgAdminⅢにいれてみる。
インストールは簡単、Application Stack Builderを使えばすぐできますので。
気になるのが、 pgAgentのインストール時にオペレーションユーザーを設定する個所がでてくるけど、これpgAgentはwindows環境だとサービスとして起動するので、ログインユーザーを指定するようだ。但しパスワードなど変更になったらサービスのほうも変えなきゃなんだろうな。。なんだかややこしい。
pgAdminⅢのサーバー配下に「ジョブ」が現れる
「スケジュール」に細かいスケジュールを設定。
「手段」にはSQL・バッチかを設定し、定義のところにSQL文やバッチ文を記述。
バックアップなので、PostgreSQLのバックアップ・ユーティリティの、
pg_dump と pg_dumpall を使ったバッチ構文を作る。
・pg_dump.exe データベース単位のバックアップ
・pg_dumpall.exe PostgreSQLの全てのデータベースをバックアップ
・psql.exe リストア
試しにコマンドプロンプトから実行してみる。
【pg_dump】(データベース名dbtestをバックアップ)
C:\PostgreSQL\9.3\bin\pg_dump.exe -h localhost -p 5432 -U postgres -F plain -v -f C:\postgres_dbtest_backup.sql db 2> C:\postgres_dbtest_backup.log
(pg_dump.exeの場所は環境によって変更、dbはデータベース名)
postgres_db_backup.sqlファイルとpostgres_db_backup.logログファイルが
Cドライブ直下に出来ましたかね。
場合によってはパスワードの要求があるので、postgresのpgpass.confファイルに登録しておく。
場所:C:\Users\ユーザー名\AppData\Roaming\postgresql
書式:hostname : port : database : username : password
【pg_dumpall】(データベースを全てバックアップ)
C:\PostgreSQL\9.3\bin\pg_dumpall.exe -h localhost -p 5432 -U postgres -v -f C:\postgres_all_backup.sql 2> C:\postgres_all_backup.log
【psql.exe】(データベース名dbをリストア)
C:\PostgreSQL\9.3\bin\psql.exe -h localhost -p 5432 -U postgres -f C:\postgres_test_backup.sql
そうそう知ってると思うけど、パスに半角スペースが入ってたら、ダブルコーテーションで ”囲って” 。
(インストールディレクトリがC:\Program Filesになってたりすると、よくつまづくのですよ。)
これが動けば、あとは先ほどの「手段」の定義にこのバッチ文を記述すれば完了。
―参考にさせて頂いたサイトー
Windowsで運用しているPosgreSQL 9.2のバックアップとリストア pg_dumpとpsqlのバッチ処理 | IT関連の技術情報サイト