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.
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
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.