On 11/02/2015 07:44 AM, Paul Jungwirth wrote:
> Hello,
>
> I'm running Postgres 9.3 in a warm standby configuration, and the slave
> has this setting in recovery.conf:
>
> archive_cleanup_command = '/usr/lib/postgresql/9.3/bin/pg_archivecleanup
> /secure/pgsql/archive/ %r'
>
> But I noticed that the archive directory had files going back to
> February 2014:
>
> $ ls -ltr archive | head
> total 9126292
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 000000010000000000000002.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 000000010000000000000003.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 000000010000000000000004.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 000000010000000000000006.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 000000010000000000000007.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 00000001000000000000000B.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 00000001000000000000000C.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 00000001000000000000000E.00000028.backup
> -rw------- 1 postgres postgres 300 Feb 15 2014
> 00000001000000000000000F.00000028.backup
>
> And even if I run the command by hand, nothing is actually deleted:
>
> $ pg_archivecleanup -d /secure/pgsql/archive/
> 00000001000000000000000F.00000028.backup
> pg_archivecleanup: keep WAL file
> "/secure/pgsql/archive//00000001000000000000000F" and later
>
> Despite the message, and the same files remain.
It is doing what you ask. See here:
http://www.postgresql.org/docs/current/static/pgarchivecleanup.html
"When used as a standalone program all WAL files logically preceding the
oldestkeptwalfile will be removed from archivelocation. In this mode, if
you specify a .backup file name, then only the file prefix will be used
as the oldestkeptwalfile. This allows you to remove all WAL files
archived prior to a specific base backup without error. For example, the
following example will remove all files older than WAL file name
000000010000003700000010:"
From what I can see you picked the oldest backup and told
pg_archivecleanup to keep everything newer, which is what it did. So if
you want to remove older files start at a newer backup.
>
> Does anyone have any idea why pg_archivecleanup isn't deleting anything?
As to why it is not cleaning up as part of archive_cleanup_command, that
will need more information, namely how are the WALs being archive?
Or to put it another way what is the archive_command?
>
> Thanks,
> Paul
>
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com