Estamos executando um processo de backup baseado em pg_basebackup
um banco de dados Postgres 14.5 que cria muitos arquivos WAL e usa grandes quantidades de espaço em disco. Como realmente não precisamos do arquivo WAL, pensei em desabilitar o arquivamento WAL e alterei esses valores (todo o resto é puro padrão):
archive_mode = off # was 'on' before
wal_level = minimal # was 'replica' before (there's only a single db instance running)
max_wal_senders = 0 # was '10' before (but wal_level = minimal seems to require '0')
Talvez não haja necessidade real de diminuir wal_level
from replica
para minimal
, mas a documentação do WAL afirma o que parece exatamente suficiente para meu banco de dados menos que crítico:
minimal
remove todos os registros, exceto as informações necessárias para a recuperação de uma falha ou desligamento imediato.
Infelizmente, após a configuração acima, o processo de backup falha com este erro:
FATAL: number of requested standby connections exceeds max_wal_senders (currently 0)
Em outras palavras, max_wal_senders
deve ser zero e também maior que zero ao mesmo tempo! O que posso fazer para sair deste impasse?
Não defina
wal_level = minimal
, não definamax_wal_senders = 0
e vá emborawal_level = replica
.pg_basebackup
usa o mecanismo de replicação integrado para executar um backup consistente enquanto o servidor está em execução (e potencialmente modificando dados).