PostgreSQL - Recuperando a base de dados sem backup – Central de Atendimento
13 de dezembro de 2018 18:51
Atenção! O procedimento correto para tentar recuperar uma base de dados é através do Backup que deve ser feito regularmente, estas instruções são para uma restauração emergencial e pode NÃO funcionar em alguns casos.
Alguns SGBDs como o FireBird e SQLite armazenam toda sua base de dados em um único arquivo, as vantagens desta abordagem é a facilidade de copiar, mover, restaurar, etc. Porém este arquivo se corrompe muito facilmente, além que conforme sua quantidade de registros vai aumentando o tamanho deste arquivo também vai aumentando.
O PostgreSQL aborda de uma maneira diferente, armazenado os dados em vários arquivos que ele mesmo gerencia, estes arquivos ficam juntamente com os arquivos de configuração dentro da pasta \data.
Aí que entra a abordagem de tentar recuperar os dados através desta pasta \data.
Ao desinstalar o PostgreSQL, a pasta \data não é removida e ao reinstalar o banco de dados ele irá perguntar o caminho desta pasta, caso ela não exista o instalador irá criar uma nova, sem nenhum registro, mas se você apontar para a pasta onde estavam seus dados o instalador irá tentar recuperar os dados automaticamente.
Outra alternativa é fazer uma instalação "limpa" e depois mudar o caminho da pasta \data para onde seus dados estavam.
Para mudar o caminho da pasta \data será necessário remover e reinstalar o serviço do postgres.
Para isto abra o "Prompt de Comando" como Administrador e execute o seguinte comando:
pg_ctl unregister -N "nome_servico_pgsql" -U "WinUser" -P "SenhaWin"
"nome_servico_pgsql" é o nome do serviço que aparece nas propriedades do serviço (services.msc>procurar por postgres>clicar com botão direito>propriedades>nome do serviço)