lo spostamento di grandi database PostgreSQL / PostGIS


8

Devo spostare e aggiornare un database PostGIS molto grande (~ 320 GB) da server1 (PostgreSQL 9.1, PostGIS 1.5) a server2 (PostgreSQL 9.3, PostGIS 2.1).

Il processo di aggiornamento è ben documentato . Il problema è che non ho abbastanza spazio su server1 per scaricare il file lì, eseguirne il checksum, quindi copiarlo su server2 e verificare le somme. Provai:

  • Piping del dump da server1 a server2 utilizzando nc.
  • Scrivere un file di dump direttamente su un filesystem server2 che è montato su server1 usando sshfs.

Entrambe le volte il file di dump sembra essere stato danneggiato. pg_restorerotto in luoghi diversi con errori come questo:

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

Qualcuno può suggerire un modo migliore per eseguire questa mossa e l'aggiornamento?

AGGIORNAMENTO: Ho provato NFS (e ha dato a SSHFS un altro tentativo). È chiaro che questi filesystem remoti non possono trasferire in modo affidabile così tanti dati . I blocchi mancano visibilmente dal file SQL risultante, causando errori di sintassi come questo durante l'importazione:

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;"

La seconda opzione sembra buona, ma perché non usi NFS? Forse c'è qualche piccola interruzione che non è ben gestita da sshfs. 320Gb è un file abbastanza grande.
Marco,

1
Acquista un disco più grande? 1Tb costa quasi nulla in questi giorni.
Colin 't Hart,

Risulta che NFS non è affidabile quanto SSHFS per il trasferimento di questi dati. Domanda di aggiornamento.
Kontextify

Risposte:


7

Consiglio di scaricare il database 9.1 dal nuovo server 9.3 in questo modo:

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

Consiglio di usare 9.3 pg_dumpperché pg_dumpè sempre compatibile con le versioni precedenti, ma non compatibile con le versioni precedenti. In altre parole, il più recentepg_dump si occuperà di eventuali modifiche alla sintassi di cui il nuovo server richiede che l'utilità precedente non sia a conoscenza.

Assicurati di aver configurato your pg_hba.confe listen_addressesin postgresql.confper consentirti di connetterti e scaricare in remoto in modo appropriato.

Se si desidera provare un dump e ripristinare in un solo passaggio, è possibile provare anche questo:

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

Spero che aiuti. =)


Il "dump e ripristino in un solo passaggio" probabilmente non funzionerà a causa delle differenze tra le versioni di PostGIS, ma l' esecuzione del dump in remoto dal server ricevente e il ripristino da esso ha funzionato! Questo è chiaramente meglio dell'uso dei filesystem di rete. Grazie, ora ho un database funzionante!
Kontextify

È un processo performativo? Mi sembra che ci vorranno alcuni giorni per completare. Quindi pgdump creerà un file di dump con ~ 300 GB se non utilizzo un server per eseguire il backup remoto?
DeFreitas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.