pg_archivecleanup

pg_archivecleanup — limpa os arquivos de WAL do PostgreSQL

Sinopse

pg_archivecleanup [opção...] local_do_arquivamento arquivo_de_wal_mais_antigo_mantido

Descrição

O utilitário pg_archivecleanup foi projetado para ser usado com o parâmetro archive_cleanup_command para limpar os arquivos de WAL quando um servidor em-espera é utilizado (veja Servidores em-espera de envio de registros). O utilitário pg_archivecleanup também pode ser usado como um programa independente para limpar arquivos de WAL.

Para configurar um servidor em-espera para usar o pg_archivecleanup, deve-se colocar esta linha no arquivo de configuração postgresql.conf:

archive_cleanup_command = 'pg_archivecleanup local_do_arquivamento %r'

onde local_do_arquivamento é o diretório do qual os arquivos de segmento de WAL devem ser removidos.

Quando usado dentro do archive_cleanup_command, todos os arquivos de WAL logicamente anteriores ao valor do argumento %r serão removidos do local_do_arquivamento. Isto minimiza o número de arquivos que precisam ser mantidos, enquanto preserva o recurso de reinício em caso de falha. O uso desse parâmetro será apropriado se o local_do_arquivamento for uma área de armazenamento temporária para este servidor em-espera específico, mas não quando o local_do_arquivamento for planejado como uma área de arquivamento de WAL de longo prazo, ou quando vários servidores em-espera estão se recuperando usando o mesmo local de arquivamento.

Quando usado como um programa independente, todos os arquivos de WAL logicamente anteriores ao arquivo_de_wal_mais_antigo_mantido serão removidos do local_do_arquivamento. Neste modo, se for especificado um nome de arquivo .partial ou .backup, apenas o prefixo do arquivo será usado como arquivo_de_wal_mais_antigo_mantido. Este tratamento do nome do arquivo .backup permite que se remova todos os arquivos de WAL arquivados antes de uma cópia de segurança base específica sem erros. O exemplo a seguir remove todos os arquivos anteriores ao nome do arquivo de WAL 000000010000003700000010:

pg_archivecleanup -d archive 000000010000003700000010.00000020.backup

pg_archivecleanup:  keep WAL file "archive/000000010000003700000010" and later
pg_archivecleanup:  removing file "archive/00000001000000370000000F"
pg_archivecleanup:  removing file "archive/00000001000000370000000E"

O utilitário pg_archivecleanup assume que o local_do_arquivamento é um diretório que pode ser lido e escrito pelo usuário do processo servidor.

Opções

O utilitário pg_archivecleanup aceita os seguintes argumentos de linha de comando:

-b
--clean-backup-history

Remove também os arquivos de histórico de cópias de segurança. Veja Criação de cópia de segurança base para obter detalhes sobre os arquivos de histórico de cópia de segurança.

-d
--debug

Escreve muitas mensagens de depuração em stderr.

-n
--dry-run

Escreve os nomes dos arquivos que teriam sido removidos na saída padrão (stdout) (realiza uma simulação/dry run).

-V
--version

Mostra a versão do pg_archivecleanup, e termina.

-x extensão
--strip-extension=extensão

Fornece uma extensão que será removida de todos os nomes de arquivo antes de decidir se eles devem ser excluídos. Isto é geralmente útil para limpar os arquivos comprimidos durante o armazenamento e, portanto, tiveram uma extensão adicionada pelo programa de compressão. Por exemplo: -x .gz.

-?
--help

Mostra a ajuda sobre os argumentos da linha de comando do pg_archivecleanup, e termina.

Variáveis de ambiente

A variável de ambiente PG_COLOR especifica se devem ser usadas cores nas mensagens de diagnóstico. Os valores possíveis são always, auto e never.

Notas

O utilitário pg_archivecleanup foi projetado para funcionar com o PostgreSQL 8.0 e posterior quando usado como um utilitário independente, ou com o PostgreSQL 9.0 e posterior quando usado como um comando de limpeza de arquivamento.

O utilitário pg_archivecleanup é escrito em C, e tem um código-fonte fácil de modificar, com seções especificamente projetadas para modificar conforme as necessidades do usuário.

Exemplos

Em sistemas Linux ou Unix, pode-se usar:

archive_cleanup_command = 'pg_archivecleanup -d /mnt/standby/archive %r 2>>cleanup.log'

onde o diretório de arquivamento está localizado fisicamente no servidor em-espera, de modo que o archive_command o está acessando através de NFS, mas os arquivos são locais para o servidor em-espera. Isto irá:

  • produzir saída de depuração em cleanup.log

  • remover os arquivos desnecessários do diretório de arquivamento