mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-05 23:26:54 +02:00
153 lines
4.8 KiB
Plaintext
153 lines
4.8 KiB
Plaintext
<!-- doc/src/sgml/pgarchivecleanup.sgml -->
|
|
|
|
<sect1 id="pgarchivecleanup">
|
|
<title>pg_archivecleanup</title>
|
|
|
|
<indexterm zone="pgarchivecleanup">
|
|
<primary>pg_archivecleanup</primary>
|
|
</indexterm>
|
|
|
|
<para>
|
|
<application>pg_archivecleanup</> is designed to be used as an
|
|
<literal>archive_cleanup_command</literal> to clean up WAL file archives when
|
|
running as a standby server (see <xref linkend="warm-standby">).
|
|
<application>pg_archivecleanup</> can also be used as a standalone program to
|
|
clean WAL file archives.
|
|
</para>
|
|
|
|
<para>
|
|
<application>pg_archivecleanup</application> features include:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Written in C, so very portable and easy to install
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Easy-to-modify source code, with specifically designated
|
|
sections to modify for your own needs
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<sect2>
|
|
<title>Usage</title>
|
|
|
|
<para>
|
|
To configure a standby
|
|
server to use <application>pg_archivecleanup</>, put this into its
|
|
<filename>recovery.conf</filename> configuration file:
|
|
<programlisting>
|
|
archive_cleanup_command = 'pg_archivecleanup <replaceable>archivelocation</> %r'
|
|
</programlisting>
|
|
where <replaceable>archivelocation</> is the directory from which WAL segment
|
|
files should be removed.
|
|
</para>
|
|
<para>
|
|
When used within <xref linkend="archive-cleanup-command">, all WAL files
|
|
logically preceding the value of the <literal>%r</> argument will be removed
|
|
from <replaceable>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 <replaceable>archivelocation</> is a
|
|
transient staging area for this particular standby server, but
|
|
<emphasis>not</> when the <replaceable>archivelocation</> is intended as a
|
|
long-term WAL archive area, or when multiple standby servers are recovering
|
|
from the same archive location.
|
|
</para>
|
|
<para>
|
|
The full syntax of <application>pg_archivecleanup</>'s command line is
|
|
<synopsis>
|
|
pg_archivecleanup <optional> <replaceable>option</> ... </optional> <replaceable>archivelocation</> <replaceable>restartwalfile</>
|
|
</synopsis>
|
|
When used as a standalone program all WAL files logically preceding the
|
|
<literal>restartwalfile</> will be removed <replaceable>archivelocation</>.
|
|
In this mode, if you specify a <filename>.backup</> file name, then only the file prefix
|
|
will be used as the <literal>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 <filename>000000010000003700000010</>:
|
|
<programlisting>
|
|
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"
|
|
</programlisting>
|
|
<application>pg_archivecleanup</application> assumes that
|
|
<replaceable>archivelocation</> is a directory readable and writable by the
|
|
server-owning user.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title><application>pg_archivecleanup</> Options</title>
|
|
|
|
<para>
|
|
<application>pg_archivecleanup</application> accepts the following command-line arguments:
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term><option>-d</option></term>
|
|
<listitem>
|
|
<para>
|
|
Print lots of debug logging output on <filename>stderr</>.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Examples</title>
|
|
|
|
<para>On Linux or Unix systems, you might use:
|
|
<programlisting>
|
|
archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'
|
|
</programlisting>
|
|
where the archive directory is physically located on the standby server,
|
|
so that the <varname>archive_command</> is accessing it across NFS,
|
|
but the files are local to the standby.
|
|
This will:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
produce debugging output in <filename>cleanup.log</>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
remove no-longer-needed files from the archive directory
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Supported Server Versions</title>
|
|
|
|
<para>
|
|
<application>pg_archivecleanup</application> is designed to work with
|
|
<productname>PostgreSQL</> 8.0 and later when used as a standalone utility,
|
|
or with <productname>PostgreSQL</> 9.0 and later when used as an
|
|
archive cleanup command.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Author</title>
|
|
|
|
<para>
|
|
Simon Riggs <email>simon@2ndquadrant.com</email>
|
|
</para>
|
|
</sect2>
|
|
|
|
</sect1>
|