pg_archivecleanup — limpa os arquivos de WAL do PostgreSQL
pg_archivecleanup [opção...] local_do_arquivamento arquivo_de_wal_mais_antigo_mantido
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.
O utilitário pg_archivecleanup aceita os seguintes argumentos de linha de comando:
-b--clean-backup-historyRemove 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--versionMostra 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.
-?--helpMostra a ajuda sobre os argumentos da linha de comando do pg_archivecleanup, e termina.
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.
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.
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