おじょろじょの、「河童の話は聞かないで。」

プログラムに関しての覚え書きや、仕事のぼやきなど。。

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になってたりすると、よくつまづくのですよ。)

 

これが動けば、あとは先ほどの「手段」の定義にこのバッチ文を記述すれば完了。

 

―参考にさせて頂いたサイトー

pgAgentでジョブを定期実行する

Windowsで運用しているPosgreSQL 9.2のバックアップとリストア pg_dumpとpsqlのバッチ処理 | IT関連の技術情報サイト