memindahkan database PostgreSQL / PostGIS yang besar

8

Saya perlu memindahkan dan meningkatkan database PostGIS yang sangat besar (~ 320 GB) dari server1 (PostgreSQL 9.1, PostGIS 1.5) ke server2 (PostgreSQL 9.3, PostGIS 2.1).

Proses peningkatan didokumentasikan dengan baik . Masalahnya adalah saya tidak punya cukup ruang di server1 untuk membuang file di sana, checksum itu, lalu salin ke server2 dan memverifikasi jumlah. Saya mencoba:

  • Perpipaan dump dari server1 ke server2 menggunakan nc.
  • Menulis file dump langsung ke sistem file server2 yang dipasang di server1 menggunakan sshfs.

Kedua kali file dump tampaknya telah rusak. pg_restorepecah di tempat berbeda dengan kesalahan seperti ini:

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

Adakah yang bisa menyarankan cara yang lebih baik untuk mendapatkan langkah ini dan peningkatan dilakukan?

UPDATE: Mencoba NFS (dan mencoba lagi SSHFS). Sudah jelas bahwa sistem file jarak jauh ini tidak dapat secara andal mentransfer data sebanyak ini . Blok tampak hilang dari file SQL yang dihasilkan, menyebabkan kesalahan sintaksis seperti ini selama impor:

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
sumber
Pilihan kedua sepertinya bagus tetapi mengapa Anda tidak menggunakan NFS? Mungkin ada beberapa gangguan kecil yang tidak ditangani dengan baik oleh sshfs. 320GB adalah file yang cukup besar.
Marco
1
Beli disk yang lebih besar? 1TB hampir tidak ada biaya akhir-akhir ini.
Colin 't Hart
Ternyata NFS sama tidak andalnya dengan SSHFS untuk mentransfer banyak data ini. Memperbarui pertanyaan.
kontextify

Jawaban:

7

Saya akan merekomendasikan membuang database 9.1 dari server 9.3 baru Anda seperti ini:

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

Saya sarankan menggunakan 9.3 pg_dumpkarena pg_dumpselalu kompatibel ke belakang, tetapi tidak kompatibel maju. Dengan kata lain, yang lebih baru pg_dumpakan menangani setiap perubahan sintaksis yang diperlukan server baru yang tidak diketahui oleh utilitas lama.

Pastikan untuk memastikan Anda pg_hba.confdan listen_addressesmasuk postgresql.confsudah diatur untuk memungkinkan Anda untuk terhubung dan membuang dari jarak jauh juga.

Jika Anda ingin mencoba dump dan restore dalam satu langkah, Anda dapat mencoba ini juga:

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

Semoga itu bisa membantu. =)

Kassandry
sumber
"Dump and restore dalam satu langkah" mungkin tidak akan berfungsi karena perbedaan antara versi PostGIS, tetapi menjalankan dump dari jarak jauh dari server penerima dan mengembalikannya berfungsi! Ini jelas lebih baik daripada menggunakan sistem file jaringan. Terima kasih, saya sekarang memiliki database yang berfungsi!
kontextify
Apakah itu proses performatif? Menurut saya itu akan memakan waktu beberapa hari untuk diselesaikan. Maka akankah pgdump membuat file dump dengan ~ 300GB jika saya tidak menggunakan server untuk backup jarak jauh?
deFreitas