di chuyển cơ sở dữ liệu PostgreSQL / PostGIS lớn


8

Tôi cần di chuyển và nâng cấp cơ sở dữ liệu PostGIS rất lớn (~ 320 GB) từ server1 (PostgreQuery 9.1, PostGIS 1.5) lên server2 (PostgreQuery 9.3, PostGIS 2.1).

Quá trình nâng cấp được ghi chép lại . Vấn đề là tôi không có đủ dung lượng trên server1 để kết xuất tệp ở đó, kiểm tra nó, sau đó sao chép nó vào server2 và xác minh các khoản tiền. Tôi đã thử:

  • Đường ống đổ từ server1 đến server2 bằng cách sử dụng nc.
  • Viết tệp kết xuất trực tiếp vào hệ thống tệp server2 được gắn trên server1 bằng cách sử dụng sshfs.

Cả hai lần tệp kết xuất dường như đã bị hỏng. pg_restoređã phá vỡ ở những nơi khác nhau với các lỗi như thế này:

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

Bất cứ ai có thể đề xuất một cách tốt hơn để thực hiện di chuyển và nâng cấp này?

CẬP NHẬT: Đã thử NFS (và đã thử SSHFS một lần nữa). Rõ ràng là các hệ thống tập tin từ xa này không thể chuyển nhiều dữ liệu này . Các khối bị thiếu rõ ràng từ tệp SQL kết quả, gây ra lỗi cú pháp như thế này trong quá trình nhập:

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

Tùy chọn thứ hai có vẻ tốt nhưng tại sao bạn không sử dụng NFS? Có lẽ có một số gián đoạn nhỏ không được xử lý tốt bởi sshfs. 320Gb là một tập tin khá lớn.
Marco

1
Mua đĩa lớn hơn? Chi phí 1Tb bên cạnh không có gì trong những ngày này.
Colin 't Hart

Hóa ra NFS cũng không đáng tin cậy như SSHFS để chuyển nhiều dữ liệu này. Cập nhật câu hỏi.
kontextify

Câu trả lời:


7

Tôi khuyên bạn nên bỏ cơ sở dữ liệu 9.1 từ máy chủ 9.3 mới của mình như sau:

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

Tôi khuyên bạn nên sử dụng 9.3 pg_dumppg_dumpluôn tương thích ngược, nhưng không tương thích về phía trước. Nói cách khác, cái mới hơn pg_dumpsẽ xử lý mọi thay đổi cú pháp mà máy chủ mới yêu cầu mà tiện ích cũ không biết đến.

Hãy chắc chắn đảm bảo rằng bạn pg_hba.conflisten_addressestrong postgresql.confđược thiết lập để cho phép bạn kết nối và kết xuất từ ​​xa một cách thích hợp.

Nếu bạn muốn thử kết xuất và khôi phục trong một bước, bạn cũng có thể thử điều này:

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

Mong rằng sẽ giúp. =)


"Kết xuất và khôi phục trong một bước" có thể sẽ không hoạt động do sự khác biệt giữa các phiên bản PostGIS, nhưng chạy kết xuất từ ​​xa từ máy chủ nhận và khôi phục từ nó hoạt động! Điều này rõ ràng là tốt hơn so với việc sử dụng các hệ thống tập tin mạng. Cảm ơn, bây giờ tôi có một cơ sở dữ liệu hoạt động!
kontextify

Đó có phải là một quá trình thực hiện? Có vẻ như tôi sẽ mất vài ngày để hoàn thành. Sau đó, pgdump sẽ tạo một tệp kết xuất với ~ 300GB nếu tôi không sử dụng máy chủ để sao lưu từ xa máy chủ?
deFreitas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.