pg_archivecleanuppg_archivecleanuppg_archivecleanup> is designed to cleanup an archive when used
as an archive_cleanup_command when running with
standby_mode = on. pg_archivecleanup> can
also be used as a standalone program to clean WAL file archives.
pg_archivecleanup features include:
Written in C, so very portable and easy to install
Easy-to-modify source code, with specifically designated
sections to modify for your own needs
Usage
To configure a standby
server to use pg_archivecleanup>, put this into its
recovery.conf configuration file:
archive_cleanup_command = 'pg_archivecleanup archiveDir> %r'
where archiveDir> is the directory from which WAL segment
files should be restored.
When used within archive_cleanup_command,
all WAL files logically preceding the value of the %r>
will be removed archivelocation>. This minimizes
the number of files that need to be retained, while preserving
crash-restart capability. Use of this parameter is appropriate if the
archivelocation> is a transient staging area for this
particular standby server, but not> when the
archivelocation> is intended as a long-term WAL archive area.
The full syntax of pg_archivecleanup>'s command line is
pg_archivecleanup option> ... archivelocation> restartwalfile>
When used as a standalone program all WAL files logically preceding the
restartwalfile> will be removed archivelocation>.
In this mode, if you specify a .backup> file name, then only the file prefix
will be used as the restartwalfile>. This allows you to remove
all WAL files archived prior to a specific base backup without error.
For example, the following example will remove all files older than
WAL file name 000000010000003700000010>:
pg_archivecleanup -d archive 000000010000003700000010.00000020.backup
pg_archivecleanup: keep WAL files 000000010000003700000010 and later
pg_archivecleanup: removing "archive/00000001000000370000000F"
pg_archivecleanup: removing "archive/00000001000000370000000E"
pg_archivecleanup assumes that
archivelocation> is a directory readable and writable by the
server-owning user.
pg_archivecleanup> Optionspg_archivecleanup accepts the following command-line arguments:
Print lots of debug logging output on stderr>.
ExamplesOn Linux or Unix systems, you might use:
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
where the archive directory is physically located on the standby server,
so that the archive_command> is accessing it across NFS,
but the files are local to the standby.
This will:
produce debugging output in cleanup.log>
remove no-longer-needed files from the archive directory
Supported server versionspg_archivecleanup is designed to work with
PostgreSQL> 8.0 and later when used as a standalone utility,
or with PostgreSQL> 9.0 and later when used as an
archive cleanup command.
Author
Simon Riggs simon@2ndquadrant.com