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_restore
pecah 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;"
sumber
Jawaban:
Saya akan merekomendasikan membuang database 9.1 dari server 9.3 baru Anda seperti ini:
Saya sarankan menggunakan 9.3
pg_dump
karenapg_dump
selalu kompatibel ke belakang, tetapi tidak kompatibel maju. Dengan kata lain, yang lebih barupg_dump
akan menangani setiap perubahan sintaksis yang diperlukan server baru yang tidak diketahui oleh utilitas lama.Pastikan untuk memastikan Anda
pg_hba.conf
danlisten_addresses
masukpostgresql.conf
sudah 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:
Semoga itu bisa membantu. =)
sumber