. . algo me diz que seu DBA não é um cara do Postgres? : -)
Com base nos seus comentários, parece que o mais próximo da solução que você está procurando é inicializar o banco de dados (usando seu backup básico) e emitir um CHECKPOINT
, depois desligar esse banco de dados e fazer o backup. Isso irá liberar os dados do WAL nos logs de "catch-up" para os arquivos de banco de dados primários e deixar você com um WAL "vazio" (embora você ainda tenha alguns segmentos pendurados necessários para iniciar o servidor & verificar consistência).
A única outra maneira de garantir que o backup que você está capturando tenha todos os dados liberados para os arquivos principais do banco de dados é desligar o banco de dados para fazer o backup.
Eu não aconselharia fazer um desses para backups estáticos, que é o que parece que você está fazendo. Apenas espere pelo backup criado pelo manual do Postgres, e se você precisar ativá-lo, inicie um servidor usando-o como faria normalmente no manual.
Honestamente não consigo pensar em uma razão válida para o que seu DBA está solicitando - O breve atraso de inicialização enquanto o Postgres reproduz os arquivos de log coletados depois que o comando pg_stop_backup()
não vale fazer algo estranho e diferente em vez de seguir os procedimentos testados e comprovados no manual e a quantidade de testes que você precisaria fazer para verificar se qualquer novo procedimento que você venha a realizar é tão robusto quanto os procedimentos padrão, tornando-o uma opção pouco atraente IMHO.
Obviamente, o procedimento para escravos / streaming / hot-standby é um pouco diferente, novamente de acordo com o manual.
Se seu DBA realmente quiser um número mínimo de segmentos do WAL, sugiro a solução que eu uso:
- Um escravo é designado como o host de backup.
- Quando chega a hora do backup, desligamos o escravo e fazemos o backup do sistema de arquivos
- O escravo é iniciado quando terminamos o backup & geralmente alcança dentro de 15 minutos.
A recuperação desse backup é essencialmente a mesma que ativar um escravo - o escravo é inicializado e o arquivo acionador de recuperação é criado.
Existem alguns truques para configurar isto - nada que não esteja coberto no manual, mas obviamente você quer testar completamente.