Eu tenho $PGDATA/base, mas nada mais. Ele foi retirado de uma instalação após o desligamento do serviço postgreSQL, portanto está limpo. Existe alguma maneira de recriar os outros elementos em $PGDATA que permitem que ele seja usado novamente - pg_tblspc/, global/?
FWIW Estou executando 8.1.23.
Obrigado
Você deixou tanto de fora que suas chances de recuperar dados úteis são insignificantes.
pg_clog
contém os logs de confirmação/reversão. Sem eles, o sistema não sabe quais partes dos arquivos do banco de dados são válidas e quais não são. (simplificação grosseira, mas ei).pg_xlog
, os logs de gravação antecipada. Sem eles, o banco de dados não pode lidar com gravações incompletas, portanto, verá os arquivos do banco de dados em um estado incompleto que pode estar danificado. Os índices podem estar corrompidos, as páginas heap podem estar parcialmente gravadas, etc.global/pg_control
, o arquivo que contém o identificador do sistema, o valor final da transação, a posição do ponto de verificação do log de transações e muito mais.... e mais.
É vital seguir as instruções na documentação sobre como fazer backup de um banco de dados . O não cumprimento das instruções resultará em um backup inútil e irrecuperável. Testar backups também é vital.
Com uma análise aprofundada e uma versão hackeada do
postgres
binário do servidor que foi modificado para recuperação de dados, espero que seja possível recuperar uma versão corrompida de seus dados, com entradas duplicadas em chaves primárias, chaves estrangeiras quebradas, várias cópias de dados que foi atualizado, reaparecendo linhas excluídas, etc. Isso exigiria algum conhecimento aprofundado do servidor PostgreSQL e levaria algum tempo significativo - então você estaria olhando para um custo não trivial e receberia apenas uma cópia mutilada de seus dados.