O ideal seria você ter feito um dump com o pg_dump, o que tornaria isso muito mais fácil. Pessoas de mau escritório, sem biscoito.
Como você tem os binários da mesma versão, você pode economizar alguns problemas.
- Descompacte a sua pasta de backup em algum lugar conveniente, onde você tem permissão total de leitura / gravação como sua conta de usuário normal. Presumo que esteja em sua área de trabalho:
C:\Users\Myusername\Desktop\postgresql
- para o propósito deste exemplo.
Supondo que a pasta c:\users\myusername\desktop\postgresql
contenha as pastas denominadas bin
, data
, lib
, etc:
-
Abra um
cmd.exe
shell -
cd Desktop\postgresql
-
bin\pg_ctl.exe start -D C:\users\myusername\desktop\postgresql\data
-
bin\psql.exe -U mydbusername mydb
Se o psql se conectar, desconecte-se com o comando \q
e, em seguida, faça um dump do banco de dados:
-
bin\pg_dump.exe -Fc -U mydbusername -f mydb.dbbackup mydb
... e restaure isso para uma versão moderna do PostgreSQL usando o pg_restore da versão atual.
Se você tiver problemas para restaurar para versões mais recentes como 9.0 ou 9.1, pode ser necessário usar o pg_dump da versão mais recente para conectar-se ao banco de dados antigo e fazer o despejo, em vez de usar o pg_dump de 8.2 para fazer o despejo. Você pode copiar o pg_dump de uma nova máquina para a máquina antiga se preferir não configurá-lo para despejar na rede; copie todo o diretório 'bin' de uma nova versão do PostgreSQL para algum lugar na máquina antiga e execute o pg_dump a partir daí. Copiar apenas o pg_dump.exe sozinho não funcionará, pois requer o libpq e as outras bibliotecas.
Por favor, não tente continuar a executar o 8.2, que é uma versão obsoleta e não suportada. Entre em 9,0 ou 9,1. Isso pode exigir algumas alterações no seu código; veja as notas de lançamento para cada lançamento principal de 0 desde o seu, por exemplo, 8.3.0, 8.4. 0, 9.0.0 e 9.1.0 para informações de atualização.
Agora, corrija rapidamente os procedimentos de backup para agendar um pg_dump diário, para que isso nunca mais aconteça com você
Veja o que você faria se você não tivesse os binários do PostgreSQL. Eu já tinha escrito quando vi que você tinha os binários no arquivo zip e vou mantê-lo aqui para os outros.
-
Instale o o PostgreSQL 8.2 . Sim, deve ser 8.2.x. Nenhuma outra versão funcionará para essa finalidade, já que os arquivos de dados brutos do PostgreSQL são compatíveis apenas com a mesma versão principal. Como é uma versão antiga, ela pode não coexistir com as versões atuais já instaladas, portanto, talvez seja necessário usar uma máquina de reposição ou uma máquina virtual.
-
Uma vez que você tenha o 8.2 instalado e saiba que ele está trabalhando com o banco de dados vazio criado pelo instalador, desligue-o do painel de controle de serviços (iniciar - > run - > services.msc)
-
Renomeie o diretório de dados para algo como
data-empty
. Eu acho que éC:\Program Files\PostgreSQL.2\data
para 8,2, mas não me lembro com certeza. -
Descompacte o seu datadir antigo no local em que você acabou de mover o datadir criado pelo instalador, para que ele tenha o mesmo nome e local. Você pode realmente ter que descompactá-lo em outro lugar e, em seguida, movê-lo para o lugar se estiver executando uma conta de administrador que não seja do administrador ou do UAC.
-
Obtenha propriedades no diretório de dados descompactados. Na aba de segurança, dê ao usuário "postgres" controle total e aplique-o a todos os arquivos e pastas. Isso é importante; o banco de dados não funcionará sem as permissões corretas e a cópia descompactada não terá as permissões corretas.
-
Inicie o serviço PostgreSQL em services.msc
-
Verifique se o serviço foi iniciado corretamente. Caso contrário, procure no Visualizador de Eventos informações sobre o motivo. Além disso, verifique os logs no diretório
pg_log
do datadir e certifique-se de que tudo parece sensato. Não há erros nele. -
Tente se conectar com
psql
e veja se você pode acessar seus dados. Se você puder, siga o conselho acima para fazer um despejo. Não continue usando sua versão de banco de dados obsoleta.