PostgreSQL 9.0.23 Documentation
Prev | Up | Appendix F. Additional Supplied Modules | Next

# F.22. pg_archivecleanup

pg_archivecleanup is designed to be used as an `archive_cleanup_command` to clean up WAL file archives when running as a standby server (see Section 25.2). 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

## F.22.1. Usage

To configure a standby server to use pg_archivecleanup, put this into its `recovery.conf` configuration file:

    archive_cleanup_command = 'pg_archivecleanup archivelocation %r'

where `archivelocation` is the directory from which WAL segment files should be removed.

When used within archive_cleanup_command, all WAL files logically preceding the value of the `%r` argument will be removed from `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, or when multiple standby servers are recovering from the same archive location.

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 file "archive/000000010000003700000010" and later
    pg_archivecleanup:  removing file "archive/00000001000000370000000F"
    pg_archivecleanup:  removing file "archive/00000001000000370000000E"

pg_archivecleanup assumes that `archivelocation` is a directory readable and writable by the server-owning user.

## F.22.2. pg_archivecleanup Options

pg_archivecleanup accepts the following command-line arguments:

`-d`

  Print lots of debug logging output on `stderr`.

## F.22.3. Examples

On 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

## F.22.4. Supported server versions

pg_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.

## F.22.5. Author

Simon Riggs `<simon@2ndquadrant.com>`

Prev | Home | Next
passwordcheck | Up | pgbench