movendo um grande banco de dados PostgreSQL / PostGIS

8

Preciso para mover e actualizar uma base de dados muito grande (~ 320 GB) PostGIS de server1 (PostgreSQL 9.1, PostGIS 1,5) para Servidor_2 (PostgreSQL 9.3, 2.1 PostGIS).

O processo de atualização está bem documentado . O problema é que não tenho espaço suficiente no servidor1 para despejar o arquivo lá, soma de verificação, copiá-lo para o servidor2 e verificar somas. Eu tentei:

  • Canalizando o dump do server1 para o server2 usando nc.
  • Escrevendo um arquivo de despejo diretamente em um sistema de arquivos server2 montado no server1 usando sshfs.

As duas vezes o arquivo de despejo parece estar corrompido. pg_restorequebrou em lugares diferentes com erros como este:

pg_restore: [compress_io] could not uncompress data: incorrect data check

Alguém pode sugerir uma maneira melhor de concluir essa mudança e atualizar?

UPDATE: Tentei o NFS (e tentei novamente o SSHFS). É claro que esses sistemas de arquivos remotos não podem transferir com segurança esses dados . Os blocos estão visivelmente ausentes no arquivo SQL resultante, causando erros de sintaxe como este durante a importação:

ERROR:  invalid input syntax for integer: "8266UPDATE spatial_ref_sys o set auth_name = n.auth_name, auth_srid = n.auth_srid, srtext = n.srtext, proj4text = n.proj4text FROM _pgis_restore_spatial_ref_sys n WHERE o.srid = n.srid;"
kontextify
fonte
A segunda opção parece boa, mas por que você não usa o NFS? Talvez haja alguma pequena interrupção que não seja bem tratada pelo sshfs. 320Gb é um arquivo bastante grande.
Marco
11
Compre um disco maior? Hoje em dia, os custos de 1 TB são praticamente nulos.
Colin 'Hart
Acontece que o NFS não é tão confiável quanto o SSHFS para transferir tantos dados. Atualizando pergunta.
Kdextify

Respostas:

7

Eu recomendaria despejar o banco de dados 9.1 do seu novo servidor 9.3 como este:

pg_dump -h remoteserver -U remoteuser remotedbname -Fc -f my_old_server_backup.dump

Eu recomendo usar o 9.3 pg_dumpcomo pg_dumpsempre é compatível com versões anteriores, mas não é compatível com versões anteriores. Em outras palavras, o mais novo pg_dumpcuidará de quaisquer alterações de sintaxe que o novo servidor exija que o utilitário mais antigo não conheça.

Certifique-se de garantir que o seu pg_hba.confe listen_addressesem postgresql.confsão configurados para permitir que você se conectar remotamente e despejar adequadamente também.

Se você quiser tentar um despejo e restaurar em uma etapa, tente também:

pg_dump -h remotehost -U remoteuser remotedbname | psql -U localuser localdbname

Espero que ajude. =)

Kassandry
fonte
O "despejo e restauração em uma única etapa" provavelmente não funcionará devido às diferenças entre as versões do PostGIS, mas executar o despejo remotamente a partir do servidor de recebimento e restaurá-lo funcionou! Isso é claramente melhor do que usar sistemas de arquivos em rede. Obrigado, agora tenho um banco de dados em funcionamento!
precisa saber é o seguinte
Isso é um processo performativo? Parece-me que levará alguns dias para concluir. O pgdump criará um arquivo de despejo com ~ 300 GB se eu não usar um servidor para fazer backup remoto?
DeFreitas