Skip to main content

Estratégias de Backup e PITR: Indo além do pg_dump com pg_receivewal

By 8 de abril de 2026Institucional

Para muitas empresas, a estratégia de backup resume-se à execução diária de um pg_dump. Embora útil para portabilidade e restaurações pontuais de esquemas, depender exclusivamente de backups lógicos em ambientes de alta criticidade é um risco latente. O problema real surge no intervalo entre as execuções: se o seu backup roda às 02h e o banco falha às 14h, você acaba de aceitar uma perda de 12 horas de transações.

Em missões críticas, o RPO (Recovery Point Objective) deve ser o menor possível. Para garantir um RPO próximo de zero, precisamos migrar do backup lógico para o Continuous Archiving e o Point-in-Time Recovery (PITR).

O gargalo do backup lógico e a necessidade do WAL

O pg_dump extrai um snapshot consistente do banco de dados no momento em que sua execução é iniciada. Isso garante que o backup seja logicamente consistente, mesmo que outras transações continuem ocorrendo durante o processo. No entanto, transações realizadas após a criação desse snapshot não fazem parte do backup. Para alcançar a previsibilidade operacional e a resiliência exigida em arquiteturas modernas, utilizamos os arquivos de Write Ahead Log (WAL).

O WAL (Write-Ahead Log) registra todas as modificações realizadas no banco de dados antes que elas sejam efetivamente persistidas nos arquivos de dados em disco, garantindo durabilidade e possibilitando mecanismos como replicação e Point-in-Time Recovery (PITR).

Implementação tática: o papel do pg_receivewal

Tradicionalmente, o arquivamento é realizado por meio do parâmetro archive_command no postgresql.conf, que envia segmentos WAL completos para um destino de armazenamento. No entanto, esse método só transmite o arquivo após o segmento ser preenchido (normalmente 16MB) ou quando o parâmetro archive_timeout força a troca do segmento.

Em cenários que exigem um RPO ainda menor, o utilitário pg_receivewal pode complementar ou substituir estratégias tradicionais de archiving, recebendo o fluxo de WAL quase em tempo real por meio do protocolo de replicação do PostgreSQL.

Exemplo de aplicação prática:

Diferente do arquivamento passivo, o pg_receivewal pode ser configurado para persistir o log assim que ele é gerado:

SQL

-- No servidor primário, ajuste o nível de WAL
ALTER SYSTEM SET wal_level = 'replica';
ALTER SYSTEM SET max_wal_senders = 10;
SELECT pg_reload_conf();

Executando o utilitário em um servidor de backup dedicado:

Bash

pg_receivewal -D /caminho/para/arquivamento --slot=backup_slot --create-slot -h host_primario -U replicador --synchronous

O parâmetro  –synchronous permite que o pg_receivewal participe de um cenário de replicação síncrona. Para que o commit aguarde a confirmação de escrita no destino, é necessário também configurar synchronous_standby_names no servidor primário. Isso eleva a segurança dos dados ao nível máximo, embora com um impacto planejado na latência de escrita que deve ser avaliado pelo Tech Lead.

Impacto estratégico: da operação à sustentabilidade

Ignorar o PITR não é apenas um risco técnico, é um risco financeiro. O custo de recriar um dia de transações manuais ou lidar com a insatisfação de clientes por perda de dados supera em ordens de magnitude o investimento em uma infraestrutura de backup físico.

Ao implementar o PITR, você ganha a capacidade de:

  1. Recuperação de erros humanos: “Voltar no tempo” para um segundo antes de um DROP TABLE acidental.
  2. Redução de carga: Backups físicos (via pg_basebackup) são geralmente menos onerosos para o sistema do que varrer todo o banco com um dump.
  3. Escalabilidade: Facilita a criação de instâncias de Read Replicas ou ambientes de Staging idênticos à produção.

Checklist de boas práticas (Matriz de Maturidade)

  • Validação de integridade: Um backup que não foi testado não existe. Automatize restaurações periódicas em ambientes isolados.
  • Monitoramento de defasagem: Monitore a distância entre o WAL atual e o último arquivado para garantir que o RPO alvo está sendo cumprido.
  • Retenção e expurgos: Alinhe a política de retenção de WALs com as necessidades de conformidade (Compliance) da empresa.

Conclusão: maturidade e previsibilidade

A adoção de estratégias como o Continuous Archiving e o uso do pg_receivewal é o que separa uma operação reativa de uma gestão tática madura. Este nível de profundidade técnica é essencial para apoiar especialistas e gestores na tomada de decisões que reduzam incidentes e sustentem ambientes Postgres confiáveis ao longo do tempo. É o jeito de garantir que o banco de dados seja um componente sólido na estratégia de negócios, e não um gargalo de risco.

Conte Conosco!

Precisa de apoio para elevar a maturidade técnica dos seus ambientes PostgreSQL?

[Fale com a Timbira]

Leave a Reply

Share