Backup de Nível de Objeto
O backup de nível de objeto recupera esquemas, tabelas ou partições específicas sem restaurar todo o diretório de dados do PostgreSQL. Use filtros pg_dump e pg_restore direcionados.
Receita
Dump noturno em nível de tabela para tabelas críticas de ledger.
pg_dump -h prod.internal -U backup -Fc \
-t public.orders -t public.payments \
-f /backup/ledger_$(date +%F).dump appdb# Restaura uma tabela para o esquema de recuperação para investigação
pg_restore -h prod.internal -U dba -d appdb \
-t public.orders --schema=recovery_orders /backup/ledger_2026-07-09.dumpQuando usar isso: Erro do operador (DROP TABLE), corrupção parcial ou retenção legal em um subconjunto de dados.
Exemplo de Trabalho
Backup em nível de esquema e exportação em nível de partição:
# Esquema inteiro
pg_dump -h prod.internal -U backup -Fc -n reporting \
-f /backup/reporting_schema.dump appdb
# Partição única (particionamento declarativo)
pg_dump -h prod.internal -U backup -Fc \
-t 'public.events_2026_07' \
-f /backup/events_2026_07.dump appdb-- Rede de segurança dentro do banco de dados antes de uma migração arriscada
CREATE TABLE orders_backup_20260709 AS TABLE orders;
-- Ou clona apenas a estrutura
CREATE TABLE orders_restored (LIKE orders INCLUDING ALL);# Restaura os dados para uma nova tabela, troca com rename (expandir-contrair)
pg_restore -h prod.internal -d appdb --data-only \
-t public.orders /backup/ledger.dumpO que isso demonstra:
-te-nlimitam o escopo do dump para dumps mais rápidos e arquivos menores.- Restauração para um esquema alternativo para validação antes da substituição.
CREATE TABLE ASno banco de dados é um snapshot rápido de objeto sem dump de sistema de arquivos.
Mergulho Profundo
Quando o Nível de Objeto Vence
| Cenário | Abordagem |
|---|---|
| Tabela excluída | pg_restore -t do último dump noturno |
| Migração ruim em um esquema | Restaura -n para um banco de dados temporário, compara e mescla |
| Exportação legal | Dump de tabelas específicas com lista de colunas (views) |
| Banco de dados grande, pequeno erro | Evita restauração completa de várias horas |
Padrão de Troca de Volta
- Restaura o objeto para o esquema ou banco de dados
recovery_*. - Valida contagens de linhas e checksums.
- Renomeia a tabela de produção para
*_broken. - Renomeia a tabela de recuperação para o nome de produção em uma transação.
- Recria índices e chaves estrangeiras, se necessário.
Limitações
- Chaves estrangeiras de outras tabelas podem bloquear a ordem de restauração.
- Sequências devem ser redefinidas após a restauração apenas de dados.
- Dumps lógicos não capturam transações não confirmadas no instante da falha.
Armadilhas
- Nenhum dump de tabela recente - A restauração point-in-time (PITR) completa do cluster é o único caminho. Correção: Tabelas Tier-0 em dumps noturnos dedicados com
-t. - Restaurar sobre tabela ativa sem renomear - Caos de chave duplicada. Correção: Restaurar para uma tabela lateral; trocar em janela de manutenção.
- Objetos dependentes ausentes - Restaura tabela sem índices. Correção: Restaurar
--section=post-dataou definição completa da tabela. - Pai vs filho do dump de partição - Faça o dump do nome de relação de partição correto. Correção:
\d+ parentpara listar tabelas filhas. - RLS bloqueia a função de restauração - Dados parciais no dump. Correção: Backup da função com
BYPASSRLSou superusuário para dumps regulamentados.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| PITR para novo cluster + copiar tabela | Nenhum dump de objeto existe | Necessidade de correção rápida apenas de tabela |
Snapshot CREATE TABLE AS | Cópia rápida no mesmo banco de dados | Recuperação de desastres fora do local |
| Replicação lógica | Cópia contínua para o data warehouse | Recuperação de erro único |
FAQs
Dump de objeto de um standby?
Sim. pg_dump -h standby reduz a carga primária; o snapshot é da posição de replay do standby.
Posso restaurar apenas índices?
Use pg_restore --section=post-data com o filtro -t após os dados serem carregados.
Múltiplas tabelas com ordem de FK?
pg_restore lida com a ordem de dependência no formato customizado; use um único arquivo de dump para tabelas relacionadas.
Tabelas pgvector / PostGIS?
Inclua objetos de extensão no dump; certifique-se de que o destino tenha pgvector 0.8+ e PostGIS 3.5+ instalados antes da restauração.
Por quanto tempo reter dumps de objetos?
Alinhe com a retenção legal; tabelas tier-0 frequentemente têm um mínimo de 30-90 dias além da janela PITR.
Relacionados
- pg_dump & pg_restore - detalhes do formato
- Noções Básicas de Backup - visão geral da estratégia
- Noções Básicas de PITR - quando o dump de objeto está muito antigo
- Estratégia de Rollback - segurança de migração
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+.