Noções Básicas de Backup
Backups lógicos (pg_dump) exportam objetos SQL ou de arquivo. Backups físicos (backup base + WAL) capturam blocos de disco para restauração rápida e PITR. A produção precisa de ambas as estratégias para diferentes cenários de recuperação.
Receita
Dump lógico noturno para restauração de objetos; backup físico contínuo para PITR e recuperação completa do cluster.
# Lógico: esquema + dados para um banco de dados
pg_dump -h localhost -U backup -Fc -f /backup/appdb_$(date +%F).dump appdb
# Físico: pgBackRest completo (exemplo)
pgbackrest --stanza=prod backup --type=fullQuando usar isso: No primeiro dia de qualquer cluster PostgreSQL 18.4 em produção, antes da primeira migração de esquema.
Exemplo de Trabalho
Defina uma postura de backup 3-2-1 para um cluster gerenciado por Patroni:
#!/usr/bin/env bash
# nightly-logical.sh
DUMP_DIR=/backup/logical
mkdir -p "$DUMP_DIR"
pg_dump -h pg-primary.internal -U backup_role -Fc \
-f "$DUMP_DIR/appdb_$(date +%Y%m%d).dump" appdb-- Verifica se a role de backup pode ler todas as tabelas necessárias
GRANT pg_read_all_data TO backup_role;
-- Globais (roles, tablespaces) separados do pg_dump
-- pg_dumpall -g -h pg-primary.internal -U postgres > /backup/globals.sql# Verificação do arquivo WAL físico
psql -h pg-primary.internal -c "SELECT archived_count, failed_count FROM pg_stat_archiver;"O que isso demonstra:
pg_dump -Fcformato customizado suportapg_restoreparalelo e restauração seletiva de objetos.- Globais (
pg_dumpall -g) são separados dos dumps por banco de dados. - Arquivamento físico (
archive_mode) habilita PITR ao lado de dumps lógicos.
Mergulho Profundo
Tipos de Backup
| Tipo | Ferramenta | Melhor para | Limitações |
|---|---|---|---|
| Lógico | pg_dump, pg_dumpall | Restauração de objetos, bancos de dados menores, entre versões | Restauração lenta em escala de TB |
| Base físico | pg_basebackup, pgBackRest | Restauração completa do cluster, réplicas | Precisa de cadeia WAL para PITR |
| Snapshot | Snapshot EBS/LVM | Imagem rápida | Consistente em caso de falha; emparelhar com arquivo WAL |
| Réplica | Standby | Offload de leitura, não apenas backup | Não impede corrupção lógica |
Cenários de Recuperação
| Cenário | Backup preferido |
|---|---|
| Exclusão de uma tabela | pg_restore de dump lógico |
| Banco de dados corrompido | Restauração física + PITR |
| Perda de região | Cópias físicas + lógicas fora do local |
| Clonar para staging | Dump lógico ou snapshot de réplica |
Regra 3-2-1
- 3 cópias de dados
- 2 tipos de mídia diferentes
- 1 cópia fora do local (região/conta diferente)
Armadilhas
- Réplica como único backup - A replicação reproduz corrupção e exclusões. Correção: Backups lógicos ou físicos versionados independentes da réplica.
- Backups não testados - Arquivos existem, mas a restauração falha. Correção: Simulação de restauração mensal em uma instância temporária.
- Dump SQL simples para bancos de dados grandes - Single-threaded, arquivos enormes. Correção: Formato de diretório ou customizado com paralelismo.
- Esquecer globais - Roles ausentes após a restauração. Correção:
pg_dumpall -gagendado. - Fazer backup apenas de dados, não de WAL - Recuperação point-in-time impossível. Correção: Habilitar
archive_modeou pgBackRest incremental.
Alternativas
| Alternativa | Usar quando | Não usar quando |
|---|---|---|
| Apenas pgBackRest | Grande auto-hospedado, foco em PITR | Necessita apenas de restauração de nível de objeto barata |
| Backup automatizado na nuvem | RDS/Aurora | Patroni customizado on-premise |
| Apenas snapshot do sistema de arquivos | Imagem rápida com arquivo WAL | Nenhum archive_mode configurado |
FAQs
Impacto do pg_dump na carga primária?
Usa CPU e I/O; executar fora do horário de pico ou a partir de um standby com pg_dump -h standby (snapshot dos dados do standby).
Com que frequência lógico vs. físico?
Lógico diariamente ou semanalmente; físico contínuo (WAL) com backup base completo semanal típico.
O backup inclui extensões?
Dumps lógicos incluem objetos de extensão no esquema. Físico inclui tudo no diretório de dados.
Patroni e backups?
Executar pgBackRest de qualquer nó com acesso ao repositório; coordenar com patronictl pause apenas se exigido pela ferramenta.
Criptografia?
Criptografar dumps em repouso (S3 SSE, gpg) e em trânsito (TLS). Veja Criptografia em Repouso.
Relacionados
- pg_dump & pg_restore - formatos e paralelismo
- Verificação de Backup - simulações de restauração
- Noções Básicas de PITR - linha do tempo do WAL
- pgBackRest - automação física
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, e PostGIS 3.5+.