Como restaurar uma cópia em nível de sistema de arquivos de um banco de dados PostgreSQL (não despejo) para um PC diferente

3

Eu sou novo no PostgreSQL. Eu tenho que recuperar um banco de dados que estava sendo executado na máquina XP viúvas.

Eu tenho a pasta zip de postgres.

Eu extraí a instalação do postgres em um PC diferente e iniciei o uso do initDB  e criei um novo banco de dados, consegui fazer o login, mas não consigo ver nenhuma tabela antiga.

Você poderia por favor postar as etapas que você usou para iniciar o servidor em outra máquina com Windows XP e como recuperar tabelas e dados na antiga pasta de dados?

    
por Muthuvel P 01.12.2011 / 16:31

3 respostas

7

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.

por 02.12.2011 / 03:20
0

Fazer isso usando a ferramenta Postgres.app foi incrivelmente fácil.

Apenas fui para Preferências, alterei o diretório de dados e reiniciei o servidor. Foi isso. Estou muito surpresa. Eu acho que as versões eram idênticas no meu caso.

    
por 11.06.2015 / 21:35
0

Craig Ringer trabalhou para mim.

Mas para aqueles com dificuldades em instalar o Postgresql 8.2 no Windows 10 como eu, sugiro criar uma caixa virtual do Windows XP para isso.

    
por 16.11.2016 / 06:58