Postgresql
移動大型 PostgreSQL/PostGIS 數據庫
我需要將一個非常大的(~320 GB)PostGIS 數據庫從server1(PostgreSQL 9.1,PostGIS 1.5)移動和升級到server2(PostgreSQL 9.3,PostGIS 2.1)。
升級過程有據可查。問題是我在server1上沒有足夠的空間將文件轉儲到那裡,校驗和,然後將其複製到server2並驗證總和。我試過了:
- 使用管道將轉儲從server1傳輸到server2
nc
。- 將轉儲文件直接寫入server2文件系統,該文件系統使用
sshfs
.兩次轉儲文件似乎已損壞。
pg_restore
在不同的地方出現這樣的錯誤:
pg_restore: [compress_io] could not uncompress data: incorrect data check
任何人都可以提出更好的方法來完成這一舉措和升級嗎?
**更新:**嘗試了 NFS(並再次嘗試了 SSHFS)。很明顯,這些遠端文件系統無法可靠地傳輸這麼多數據。生成的 SQL 文件中明顯缺少塊,從而在導入期間導致如下語法錯誤:
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;"
我建議從新的 9.3 伺服器中轉儲 9.1 數據庫,如下所示:
pg_dump -h remoteserver -U remoteuser remotedbname -Fc -f my_old_server_backup.dump
我建議使用 9.3
pg_dump
,因為pg_dump
它始終向後兼容,但不向前兼容。換句話說,較pg_dump
新的伺服器將處理新伺服器要求的任何舊實用程序不知道的語法更改。請務必確保您的
pg_hba.conf
和listen_addresses
inpostgresql.conf
設置為允許您也可以適當地遠端連接和轉儲。如果您想嘗試一步進行轉儲和恢復,您也可以嘗試以下操作:
pg_dump -h remotehost -U remoteuser remotedbname | psql -U localuser localdbname
希望有幫助。=)