Masataka Miki's Blog

すみません、わかりません。もっと勉強して改善します。

PostgreSQL バックアップ (Windows)

   

Windows上で、PostgreSQLのバックアップを自動化(タスク)したので、メモ。

パスワードファイルを作る

安全な場所に、pgpass.confを作って、ロックダウンする。
NTFS権限設定を使用し、このファイルへ実行ユーザ以外の全員に対してアクセスを無効にする。
(もしシステムアカウントで実行しているなら、自身のユーザ資格情報を使うべき)

書式は、

host:port:database:user:password

バックアップ・バッチファイルを作る

backup.batとか。

@echo off
cd batファイルのディレクトリ(C:\BACKUP)
set dd=保存先のディレクトリ(C:\BACKUP\DMP\)※最後は\
SET PGPASSFILE=パスワードファイルのパス(C:\BACKUP\pgpass.conf)

rem DMPファイル名はyyyymmdd_hhmm.DMP
set dt=%date:~-10,4%%date:~-5,2%%date:~-2,2%
set wk=%time: =0%
rem set tm=%wk:~0,2%%wk:~3,2%%wk:~6,2%
set tm=%wk:~0,2%%wk:~3,2%
set fn=%sc%_%dt%_%tm%.DMP

@echo %date% %time% バックアップを開始しました>> BACKUP.LOG
pg_dump -U postgres -w -d postgres > %dd%%fn%

if %errorlevel% EQU 0 goto BACKUP_SUCCESS
:BACKUP_FAILURE
@echo %date% %time% バックアップが異常終了しました:エクスポート失敗>> BACKUP.LOG
goto END_BACKUP

:BACKUP_SUCCESS
@echo %date% %time% バックアップが正常終了しました>> BACKUP.LOG

:END_BACKUP
@echo.>> BACKUP.LOG

pg_dumpのオプションに -w をつける。
pg_dumpのその他のオプションは、-U user、-d database

参考:
Automated Backup on Windows/ja

 - 技術