OSDN Git Service

Improvements to docs about pg_archive_cleanup and use of archives
authorSimon Riggs <simon@2ndQuadrant.com>
Thu, 14 Oct 2010 22:23:26 +0000 (23:23 +0100)
committerSimon Riggs <simon@2ndQuadrant.com>
Thu, 14 Oct 2010 22:23:26 +0000 (23:23 +0100)
Brendan Jurd

doc/src/sgml/high-availability.sgml
doc/src/sgml/pgarchivecleanup.sgml
doc/src/sgml/recovery-config.sgml

index a4be827..eabd844 100644 (file)
@@ -681,11 +681,6 @@ protocol to make nodes agree on a serializable transactional order.
    </para>
 
    <para>
-    You can use <varname>archive_cleanup_command</> to prune the archive of
-    files no longer needed by the standby.
-   </para>
-
-   <para>
     If you're setting up the standby server for high availability purposes,
     set up WAL archiving, connections and authentication like the primary
     server, because the standby server will work as a primary server after
@@ -697,12 +692,25 @@ protocol to make nodes agree on a serializable transactional order.
    </para>
 
    <para>
+    If you're using a WAL archive, its size can be minimized using the <xref
+    linkend="archive-cleanup-command"> parameter to remove files that are no
+    longer required by the standby server.
+    The <application>pg_archivecleanup</> utility is designed specifically to
+    be used with <varname>archive_cleanup_command</> in typical single-standby
+    configurations, see <xref linkend="pgarchivecleanup">.
+    Note however, that if you're using the archive for backup purposes, you
+    need to retain files needed to recover from at least the latest base
+    backup, even if they're no longer needed by the standby.
+   </para>
+
+   <para>
     A simple example of a <filename>recovery.conf</> is:
 <programlisting>
 standby_mode = 'on'
 primary_conninfo = 'host=192.168.1.50 port=5432 user=foo password=foopass'
 restore_command = 'cp /path/to/archive/%f %p'
 trigger_file = '/path/to/trigger_file'
+archive_cleanup_command = 'pg_archivecleanup /path/to/archive %r'
 </programlisting>
    </para>
 
@@ -712,14 +720,6 @@ trigger_file = '/path/to/trigger_file'
     the primary to allow them to be connected simultaneously.
    </para>
 
-   <para>
-    If you're using a WAL archive, its size can be minimized using
-    the <varname>archive_cleanup_command</> option to remove files that are
-    no longer required by the standby server. Note however, that if you're
-    using the archive for backup purposes, you need to retain files needed
-    to recover from at least the latest base backup, even if they're no
-    longer needed by the standby.
-   </para>
   </sect2>
 
   <sect2 id="streaming-replication">
index a01f159..e5072e6 100644 (file)
@@ -8,10 +8,11 @@
  </indexterm>
 
  <para>
-  <application>pg_archivecleanup</> is designed to cleanup an archive when used
-  as an <literal>archive_cleanup_command</literal> when running with
-  <literal>standby_mode = on</literal>. <application>pg_archivecleanup</> can
-  also be used as a standalone program to clean WAL file archives.
+  <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>
    server to use <application>pg_archivecleanup</>, put this into its
    <filename>recovery.conf</filename> configuration file:
 <programlisting>
-archive_cleanup_command = 'pg_archivecleanup <replaceable>archiveDir</> %r'
+archive_cleanup_command = 'pg_archivecleanup <replaceable>archivelocation</> %r'
 </programlisting>
-   where <replaceable>archiveDir</> is the directory from which WAL segment
-   files should be restored.
+   where <replaceable>archivelocation</> is the directory from which WAL segment
+   files should be removed.
   </para>
   <para>
-   When used within <literal>archive_cleanup_command</literal>,
-   all WAL files logically preceding the value of the <literal>%r</>
-   will be removed <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.
+   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
index d555960..220372b 100644 (file)
@@ -80,20 +80,30 @@ restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
       </indexterm>
       <listitem>
        <para>
-        This parameter specifies a shell command that will be executed at
-        every restartpoint. This parameter is optional. The purpose of the
-        <varname>archive_cleanup_command</> is to provide a mechanism for cleaning
-        up old archived WAL files that are no longer needed by the standby
-        server.
-        Any <literal>%r</> is replaced by the name of the file
-        containing the last valid restart point. That is the earliest file that
-        must be kept to allow a restore to be restartable, so this information
-        can be used to truncate the archive to just the minimum required to
-        support restart from the current restore. <literal>%r</> would
-        typically be used in a warm-standby configuration
-        (see <xref linkend="warm-standby">).
-        Write <literal>%%</> to embed an actual <literal>%</> character
-        in the command.
+        This optional parameter specifies a shell command that will be executed
+        at every restartpoint.  The purpose of
+        <varname>archive_cleanup_command</> is to provide a mechanism for
+        cleaning up old archived WAL files that are no longer needed by the
+        standby server.
+        Any <literal>%r</> is replaced by the name of the file containing the
+        last valid restart point.
+        That is the earliest file that must be <emphasis>kept</> to allow a
+        restore to be restartable, and so all files earlier than <literal>%r</>
+        may be safely removed.
+        This information can be used to truncate the archive to just the
+        minimum required to support restart from the current restore.
+        The <application>pg_archivecleanup</> utility provided in
+        <literal>contrib</> (see <xref linkend="pgarchivecleanup">) serves as a
+        convenient target for <varname>archive_cleanup_command</> in typical
+        single-standby configurations, for example:
+<programlisting> archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r' </programlisting>
+        Note however that if multiple standby servers are restoring from the
+        same archive directory, you will need to ensure that you do not delete
+        WAL files until they are no longer needed by any of the servers.
+        <varname>archive_cleanup_command</> would typically be used in a
+        warm-standby configuration (see <xref linkend="warm-standby">).
+        Write <literal>%%</> to embed an actual <literal>%</> character in the
+        command.
        </para>
        <para>
         If the command returns a non-zero exit status then a WARNING log