Home Explore Blog CI



postgresql

61th chunk of `doc/src/sgml/config.sgml`
e706d3ee8350d0f32467204126c0e24ace764e14721c6a400000000100000faf
 <literal>%r</literal> 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
        restarting from the current restore. <literal>%r</literal> is typically only
        used by warm-standby configurations
        (see <xref linkend="warm-standby"/>).
        Write <literal>%%</literal> to embed an actual <literal>%</literal> character.
       </para>

       <para>
        It is important for the command to return a zero exit status
        only if it succeeds.  The command <emphasis>will</emphasis> be asked for file
        names that are not present in the archive; it must return nonzero
        when so asked.  Examples:
<programlisting>
restore_command = 'cp /mnt/server/archivedir/%f "%p"'
restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"'  # Windows
</programlisting>
        An exception is that if the command was terminated by a signal (other
        than <systemitem>SIGTERM</systemitem>, which is used as part of a
        database server shutdown) or an error by the shell (such as command
        not found), then recovery will abort and the server will not start up.
       </para>

       <para>
        This parameter can only be set in the <filename>postgresql.conf</filename>
        file or on the server command line.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-archive-cleanup-command" xreflabel="archive_cleanup_command">
      <term><varname>archive_cleanup_command</varname> (<type>string</type>)
      <indexterm>
        <primary><varname>archive_cleanup_command</varname> configuration parameter</primary>
      </indexterm>
      </term>
      <listitem>
       <para>
        This optional parameter specifies a shell command that will be executed
        at every restartpoint.  The purpose of
        <varname>archive_cleanup_command</varname> is to provide a mechanism for
        cleaning up old archived WAL files that are no longer needed by the
        standby server.
        Any <literal>%r</literal> is replaced by the name of the file containing the
        last valid restart point.
        That is the earliest file that must be <emphasis>kept</emphasis> to allow a
        restore to be restartable, and so all files earlier than <literal>%r</literal>
        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 <xref linkend="pgarchivecleanup"/> module
        is often used in <varname>archive_cleanup_command</varname> for
        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</varname> would typically be used in a
        warm-standby configuration (see <xref linkend="warm-standby"/>).
        Write <literal>%%</literal> to embed an actual <literal>%</literal> character in the
        command.
       </para>
       <para>
        If the command returns a nonzero exit status then a warning log
        message will be written.  An exception is that if the command was
        terminated by a signal or an error by the shell (such as command not
        found), a fatal error will be raised.
       </para>
       <para>
        This parameter can only be set in the <filename>postgresql.conf</filename>
        file or on the server command line.
       </para>
      </listitem>
     </varlistentry>

     <varlistentry id="guc-recovery-end-command" xreflabel="recovery_end_command">

Title: restore_command and archive_cleanup_command Details
Summary
This section details the `restore_command` and `archive_cleanup_command` configuration parameters. `restore_command` retrieves archived WAL segments, returning a zero exit status on success and nonzero if the file is not present. It is set in `postgresql.conf` or via the command line. `archive_cleanup_command` cleans up old WAL files at restart points, using the last valid restart point to determine which files are safe to remove. It is also set in `postgresql.conf` or via the command line and is commonly used with `pg_archivecleanup` in warm-standby configurations. A nonzero exit status results in a warning, while termination by a signal or shell error leads to a fatal error.