★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

pg_archivecleanup

pg_archivecleanupPostgreSQL WALアーカイブファイルを消去する

概要

pg_archivecleanup [option...] archivelocation oldestkeptwalfile

説明

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

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

archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

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

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

スタンドアローンプログラムとして使用される場合、oldestkeptwalfileより論理的に前のWALファイルは、すべてarchivelocationから削除されます。 このモードでは、.partialまたは.backupのファイル名が指定されると、そのプレフィックス部だけがoldestkeptwalfileとして使用されます。 この.backupのファイル名の処置により、エラーを起こすことなく特定のベースバックアップより前のすべての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がサーバを実行しているユーザによって読み書き可能なディレクトリであるものと仮定しています。

オプション

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

-d

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

-n

削除されるファイルの名前をstdoutに出力します(実際には削除しません).

-V
--version

pg_archivecleanupのバージョンを表示して終了します。

-x extension

削除するファイルを決定する前にファイル名から取り除かれる拡張子を指定します。 保存時に圧縮され、そのため圧縮プログラムにより拡張子を付けられたアーカイブを消去するのに特に役に立ちます。 例: -x.gz

-?
--help

pg_archivecleanupのコマンドライン引数に関するヘルプを表示して終了します。

環境

環境変数PG_COLORは診断メッセージで色を使うかどうかを指定します。 可能な値はalwaysautoneverです。

注釈

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

pg_archivecleanupはC言語で書かれており、必要に応じて修正すべき部分が明確に示されているので、修正の容易なソースコードとなっています。

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

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

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

  • デバッグ出力をcleanup.logに生成します。

  • アーカイブディレクトリの中から、不要になったファイルを削除します。

関連項目

pg_standby