1
0
mirror of https://github.com/postgres/postgres.git synced 2025-05-01 01:04:50 +03:00

doc: Add note about re-archiving of same WAL files in docs.

The server may attempt to re-archive a WAL file that was previously archived.
This commit adds the note about how an archive library should handle such
a re-archiving.

Author: Nathan Bossart
Reviewed-by: David Steele, Kyotaro Horiguchi
Discussion: https://postgr.es/m/CA+TgmoaeTe4oUT39A4nt=8LD6UJ5u0vcmGc5+Aksn-4oKRb8-w@mail.gmail.com
This commit is contained in:
Fujii Masao 2022-07-26 16:02:43 +09:00
parent 756e221db6
commit 3cabe45a81

View File

@ -681,14 +681,29 @@ test ! -f /mnt/server/archivedir/00000001000000A900000065 && cp pg_wal/0
any pre-existing archive file. This is an important safety feature to
preserve the integrity of your archive in case of administrator error
(such as sending the output of two different servers to the same archive
directory).
directory). It is advisable to test your proposed archive library to ensure
that it does not overwrite an existing file.
</para>
<para>
It is advisable to test your proposed archive library to ensure that it
indeed does not overwrite an existing file, <emphasis>and that it returns
<literal>false</literal> in this case</emphasis>.
The example command above for Unix ensures this by including a separate
In rare cases, <productname>PostgreSQL</productname> may attempt to
re-archive a WAL file that was previously archived. For example, if the
system crashes before the server makes a durable record of archival success,
the server will attempt to archive the file again after restarting (provided
archiving is still enabled). When an archive library encounters a
pre-existing file, it may return <literal>true</literal> if the WAL file has
identical contents to the pre-existing archive and the pre-existing archive
is fully persisted to storage. Alternatively, the archive library may
return <literal>false</literal> anytime a pre-existing file is encountered,
but this will require manual action by an administrator to resolve. If a
pre-existing file contains different contents than the WAL file being
archived, the archive library <emphasis>must</emphasis> return
<literal>false</literal>.
</para>
<para>
The example command above for Unix avoids overwriting a pre-existing archive
by including a separate
<command>test</command> step. On some Unix platforms, <command>cp</command> has
switches such as <option>-i</option> that can be used to do the same thing
less verbosely, but you should not rely on these without verifying that