On Sat, Dec 30, 2017 at 04:30:07AM +0300, Sergey Burladyan wrote:
> We use this scripts:
> https://github.com/avito-tech/dba-utils/tree/master/pg_archive
>
> But I can reproduce problem with simple cp & mv:
> archive_command:
> test ! -f /var/lib/postgresql/wals/%f && \
> test ! -f /var/lib/postgresql/wals/%f.tmp && \
> cp %p /var/lib/postgresql/wals/%f.tmp && \
> mv /var/lib/postgresql/wals/%f.tmp /var/lib/postgresql/wals/%f
This is unsafe. PostgreSQL expects the WAL segment archived to be
flushed to disk once the archive command has returned its result to the
backend. Don't be surprised if you get corrupted instances or that you
are not able to recover up to a consistent point if you need to roll in
a backup. Note that the documentation of PostgreSQL provides a simple
example of archive command, which is itself bad enough not to use.
--
Michael