サポンテ 勉強ノート

サポンテの勉強ノート・読書メモなどを晒します。

Windows タスクスケジューラーで PostgreSQL の vacuum や pg_dumpall を行う際の注意事項

はじめに

ときどき実施が必要な PostgreSQL の vacuum。定期的にタスクスケジューラで以下のようなバッチを起動するよう設定していましたが、動作していないことがわかりました。

REM バッチファイル
vacuumdb -U foo -a -w > "vacuum.log"

バックアップのために pg_dumpall もタスクスケジューラから定期的に実行していますが、こちらも同様に失敗しています。

パスワードファイルを用意する

パスワードファイルがないことが原因かと思い、作成しました。

Windows の場合、それは %APPDATA%postgresql\pgpass.conf です。

作成しましたが、しかしまだ成功しません。

パスワードファイルへのパスを設定する

パスワードファイルは上記の場所へ置けばいいだけのはずですが、念のため環境変数でフルパスを指示します。

REM バッチファイル
set PGPASSWORD="C:\Users\foo\AppData\Roaming\postgresql\pgpass.conf"
vacuumdb -U foo -a -w > "vacuum.log"

これでやっと上手くいきました。

pg_dumpall も同じ方法で成功しました。

pg_hba.conf による方法

host    all             foo            127.0.0.1/32            trust
host    all             foo            ::1/128                 trust

こちらの方法では上手くいきませんでした。

参考

後になってから見つけました。

顧客対応サポートシステム desknet's CAMSマニュアル

ネットの情報は Linux が多く、また PostgreSQL の書籍をじっくり読むなどしてちゃんと学んだこともないのですが、こういうところで躓きますね。

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)

[改訂新版]内部構造から学ぶPostgreSQL 設計・運用計画の鉄則 (Software Design plus)