F.25. pg_archivecleanup

pg_archivecleanupは、スタンバイサーバとして動作している際のWALファイルのアーカイブを消去するためのarchive_cleanup_commandとして使用されるように設計されています(項25.2参照)。 同時に、pg_archivecleanupはWALファイルのアーカイブを消去するためのスタンドアローンのプログラムとしても利用することができます。

pg_archivecleanupの機能は、

F.25.1. 利用方法

pg_archivecleanupを使うためにスタンバイサーバを設定するには、以下をrecovery.conf設定ファイルに記述します。

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

archivelocationは、WALセグメントファイルを削除するディレクトリです。

archive_cleanup_commandで使用される場合、論理的に%rより前のすべてのWALファイルはarchivelocationから削除されます。 これによって、クラッシュ―リスタートの機能を維持するための、保持しなければならないファイル数を最小限にします。 このパラメータの使用は、archivelocationがスタンバイサーバにおいて短期的な保存場所となっている場合には適切ですが、archivelocationを長期的なWALアーカイブ領域として使っている場合、または複数のスタンバイサーバが同一のアーカイブログの場所からリカバリしている場合には適切ではありません

pg_archivecleanupのコマンドラインの完全な文法は

pg_archivecleanup [ option ... ] archivelocation restartwalfile

スタンドアローンプログラムとして使用される場合、restartwalfileより論理的に前のWALファイルは、すべてarchivelocationから削除されます。 このモードでは、.backupファイルが指定されると、そのプレフィックス部だけがrestartwalfileとして使用されます。 この機能は、エラーを起こすことなく特定のベースバックアップより前のすべてのWALファイルを削除することを可能にします。 以下の例は、000000010000003700000010より古いすべてのファイルを削除する実例です。

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanupは、archivelocationがサーバを実行しているユーザによって読み書き可能なディレクトリであるものと仮定しています。

F.25.2. pg_archivecleanupのオプション

pg_archivecleanupは、以下のコマンドライン引数を受け付けます。

-d

stderrに大量のデバッグログを出力します。

F.25.3. 使用例

LinuxやUnixのシステムでは、以下のように使います。

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

アーカイブディレクトリは物理的にはスタンバイサーバ上に配置されていますので、archive_commandはNFSを経由してアーカイブディレクトリにアクセスしますが、それらのファイルはスタンバイサーバにとってはローカルファイルです。 この設定では、

F.25.4. サポートされるサーバのバージョン

pg_archivecleanupは、PostgreSQL 8.0 とそれ以降において、スタンドアローンユーティリティとして動作するように設計されています。 また、PostgreSQL 9.0 とそれ以降においてはアーカイブのクリーンナップコマンドとして動作するように設計されています。

F.25.5. 作者

Simon Riggs