Como posso excluir com eficiência milhares de arquivos WAL (Write-Ahead Logging) no diretório /wal em um banco de dados PostgreSQL para liberar espaço em disco e garantir a integridade do banco de dados?
-rw------- 1 postgres postgres 16777216 5 de fevereiro 14:11 000000020000000B0000004D
-rw------- 1 postgres postgres 16777216 6 de fevereiro 03:13 000000020000000B0000004E
-rw------- 1 postgres postgres 16777216 6 de fevereiro 07:57 000000020000000B0000004F
Eu tenho um backup quebrado porque a estrofe continua me mostrando esse erro.
ERRO: [082]: O segmento WAL 000000020000000B00000093 não foi arquivado antes do tempo limite de 60000 ms
Parece que o arquivador tem um problema. Configure
archive_mode = off
e reinicie o PostgreSQL, então ele excluirá os segmentos WAL automaticamente após o próximo ponto de verificação. Você pode acionar um ponto de verificação com oCHECKPOINT
comando se não quiser esperar.Nunca, jamais, exclua nenhum arquivo em
pg_wal
você mesmo.Parece que sua configuração de arquivamento está quebrada.
https://www.postgresql.org/docs/16/wal-configuration.html
Então - você precisa consertar o arquivamento do seu wal ou desligá-lo (remover o arquivo
archive_command
). Obviamente, você desejará que seus backups funcionem novamente o mais rápido possível.