Now to the question.
Once the archive_command starts lying about its success, postgresql deletes
a number of the xlog files that it has been told have been successfuly archived.
Why does it do this? Can I control it? Can I turn it off?
Because they're no longer needed.
If you want to keep those files, make the archive_command not lie.
Normally posgres will rename the old WAL files that have been archived and are
no longer needed,
keeping the number of WAL files constant. In this case, it actually deletes
them.
Why is the behaviour different?
Renaming files is done because the files will be reused in the future
under the new name. However, after a long archiver failure, new files
need to be created to hold the extra data. When the archiver is
restored, those excess files can be deleted because they're not needed
for recycling. (The number of files to keep for recycling is a function
of checkpoint_segments.)
So it looks like postgresql will try to keep 2.5 * checkpoint_segments files,
and if it has more that have been reported as archived, then it will
start removing them.
Does this sound correct?
--
Evan Rempel
--
Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-admin