DBA BRABOMentoria Técnica para DBAs

Recuperação de dados PostgreSQL

BRABO DATA RECOVERY

Dados PostgreSQL recuperados direto do PGDATA, sem postmaster, quando o cluster não sobe e o backup não salva.

Recuperação em nível de página que lê o PGDATA direto: os arquivos de relação em base/<oid>/, com os segmentos .1 .2, tablespaces em pg_tblspc e o pg_filenode.map. O catálogo (pg_class, pg_attribute, pg_namespace, pg_type) é lido do próprio cluster, então as tabelas voltam com nomes, tipos e o mesmo texto que o PostgreSQL imprime. A visibilidade de cada tupla é decidida por xmin/xmax, hint bits e pelo pg_xact, como o próprio banco faz.

Backup e recuperação

O problema

Quando o caminho normal acabou

O cluster não sobe: pg_control danificado, página com checksum inválido, pg_xact perdido, WAL faltando, ou um DELETE sem WHERE que o pg_dump de ontem não cobre. pg_resetwal e zero_damaged_pages descartam dados para o banco subir. Enquanto o autovacuum não passou, as tuplas continuam gravadas nas páginas.

Como entra

Último recurso, sobre cópias

Depois de restore, PITR e réplica. Trabalhamos sobre a cópia do PGDATA com o postmaster parado, ou sobre os arquivos de relação soltos quando é só isso que sobrou. O diagnóstico valida cada página (checksum, pd_lower/pd_upper, line pointers) e conta o que é heap, índice, TOAST e página vazia. Na extração, tupla de página ruim sai marcada como suspeita, não some.

Entrega

O que o serviço faz

  • Diagnóstico de cada página: checksum de dados, header, line pointers e contagem por tipo (heap, índice, TOAST, FSM, VM)
  • Catálogo do próprio PGDATA: vários bancos, schemas, segmentos de 1 GB, tablespaces em pg_tblspc e pg_filenode.map
  • Tipos com o mesmo texto do PostgreSQL: numeric com NaN e Infinity, jsonb, arrays de N dimensões, enum, domínio, interval, inet, uuid e mais
  • TOAST na linha e fora dela, com pglz e lz4; colunas dropadas e ADD COLUMN com default (attmissingval)
  • Visibilidade por xmin/xmax, hint bits e pg_xact; sem pg_xact, só pelos hint bits, e o laudo avisa
  • Linhas apagadas e versões antigas: tuplas mortas na página, garimpo do espaço livre e imagens de página do pg_wal, inclusive com wal_compression pglz, lz4 e zstd
  • Modo scan para arquivo de relação solto, sem catálogo
  • Kit de carga em psql que cria o staging, carrega com COPY e confere a contagem de cada tabela

Suporte

Versões e plataformas

PostgreSQL 12 em diante (validado no 17)PGDATA completo ou arquivos de relação soltosLinux e Windows

Para quem

Quem chama este serviço

Quem roda PostgreSQL em produção e perdeu o cluster, sofreu um DELETE ou UPDATE indevido, ficou com páginas corrompidas depois de falha de disco, ou tem só os arquivos de um servidor que não existe mais.

BRABO DATA RECOVERY · PostgreSQL

Dados PostgreSQL recuperados direto do PGDATA, sem postmaster, quando o cluster não sobe e o backup não salva.