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