[pgsql-jp: 41490] Re: WALのarchiveファイル削除について

MauMau maumau307 @ gmail.com
2013年 8月 16日 (金) 16:33:11 JST


MauMauといいます。

archive_cleanup_commandは、レプリケーションのスタンバイサーバで実行されます。 

(レプリケーションではない)PITRでは実行されません。
これはマニュアルの次のページに書かれています。

http://www.postgresql.jp/document/9.2/html/archive-recovery-settings.html

[抜粋]
このオプションのパラメータは、すべてのリスタートポイントで実行されるシェルコマンドを指定します。 archive_cleanup_command の目的は、スタンバイサーバにとって必要と 
されない古いアーカイブWALファイルをクリーンアップする仕組みを提供することです。 



不要な古いアーカイブログを消すのは、リカバリのときでなく、データベースをバックアップしたときです。
バックアップを使ってリカバリするには、そのバックアップを取得した時点以降のWALが必要です。
つまり、それより古いアーカイブログは不要となります。
バックアップを取得した時点のWALファイル名は、pg_start_backup()やpg_basebackupによって作られる
バックアップ履歴ファイル(*.backup)やbackup_labelというファイルの
"START WAL LOCATION"行に書かれています。

Barmanやpg_rmanというバックアップ/リカバリ用の外部ツールなら、
バックアップを採取したときに自動的に古いWALを削除してくれるかもしれません。
調べてみてください。



以上


----- Original Message ----- 
From: "yokota" <yokota @ passlogy.com>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, August 16, 2013 3:35 PM
Subject: [pgsql-jp: 41488] WALのarchiveファイル削除について


> 横田と申します。
>
> WALのarchiveファイルの削除についてお教え下さい。
>
> PITRで復旧させる際、recovery.confに
> --------------------------------
> restore_command = 'cp /var/lib/pgsql/archives/%f %p'
> archive_cleanup_command = '/usr/bin/pg_archivecleanup
> /var/lib/pgsql/archives/ %r'
> recovery_end_command = 'echo "recovery_end_commnd" >> /tmp/recoveryDONE'
> --------------------------------
> と書いています。
> 復旧自体は成功しますが、archive_cleanup_commandだけが実行されません。
>
> archive_cleanup_commandを実行するには、設定等何か準備が必要でしょうか。
>
> 環境はCentOS6.4、postgresql-9.2.4のソースからコンパイルしています。
> (Fedora19 + postgresql-9.2.4-1.fc19.x86_64.rpmで同じことをしても、
> archive_cleanup_commandは実行されませんでした。)
>
> また、定期的にarchiveファイルを削除するための一般的な方法、スクリプト等
> はありますでしょうか。



pgsql-jp メーリングリストの案内