Soma de verificação incorreta durante a recuperação Banco de dados PostgreSQL (32bits) de um backup no Mac Os X 64 bits

1

Quando eu tento recuperar banco de dados PostgreSQL de um backup salvo em minha versão antiga do Mac OS X 10.5 (32bits) na minha nova versão 10.6 (64bits), eu tenho este erro:

# sudo -u postgres /opt/local/lib/postgresql82/bin/postgres -D defaultdb_backup
FATAL:  incorrect checksum in control file

Isso ocorreu devido ao servidor que executa uma versão de 32 bits e o outro a 64 bits.

Como recupero meus dados antigos?

    
por Kevin Campion 27.09.2009 / 19:12

3 respostas

1

Descobri como recuperar meus dados.

O executável postgresql está em 64 bits:

# file /opt/local/lib/postgresql82/bin/postgres
/opt/local/lib/postgresql82/bin/postgres: Mach-O 64-bit executable x86_64

Verifico que o executável do postgresql no meu backup está em 32 bits:

# file /Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh\ HD/opt/local/lib/postgresql82/bin/postgres
/Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh HD/opt/local/lib/postgresql82/bin/postgres: Mach-O executable i386

Eu copio no meu sistema:

# sudo cp /Volumes/Backup/Backups.backupdb/MyMacBook/2009-09-23-004611/Macintosh\ HD/opt/local/lib/postgresql82/bin/postgres /opt/local/lib/postgresql82/bin/postgres_32

E agora, quando eu faço:

# sudo -u postgres /opt/local/lib/postgresql82/bin/postgres_32 -D defaultdb_backup

Funciona!

Obrigado a todos

    
por 28.09.2009 / 00:41
2

Instale em algum lugar o postgres exatamente na mesma versão de antes, na mesma arquitetura, compila com as mesmas opções e, em seguida, você pode recuperar. fazer backups escrevendo segmentos wal e / ou copiando o diretório de dados não é realmente portátil.

    
por 27.09.2009 / 19:47
1

Como depesz disse que você precisará compilar uma versão de 32 bits do Postgres para importar o backup. Você deve ser capaz de obter o instalador do site do Postgres e executar a versão de 32 bits temporariamente, mesmo em uma instalação de 64 bits do OS X.

Como um aparte, no futuro, ao fazer backups, eu MUITO prefiro usar o pg_dump --clean para obter um despejo completo do banco de dados. Você pode usar um arquivo pg_dump --clean em qualquer versão do postgres.

    
por 27.09.2009 / 20:56