Làm cách nào để di chuyển dữ liệu postgres của tôi từ 8.4 sang 9.1?


27

Tôi đã nâng cấp máy phát triển Ubuntu của mình từ 11.04 lên 11.10. Trong quá trình postgres của tôi cũng được nâng cấp từ 8.4 lên 9.1.

Nhưng tôi dường như đã mất tất cả dữ liệu của mình. Nếu tôi nhìn, tôi có thể thấy rằng dữ liệu của tôi cho 8.4 nằm trong thư mục /var/lib/postgres/8.4/mainvà cơ sở dữ liệu mới của tôi nằm trong /var/lib/postgres/9.1/main.

Cách tốt nhất để di chuyển dữ liệu của tôi sang phiên bản mới là gì? Tôi chỉ có thể sao chép các tập tin?

Câu trả lời:


27
su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Lúc đầu, điều này không làm việc cho tôi vì hai lý do. Đầu tiên, postgresql-8.4 đã không được phát hiện tại một số điểm, vì vậy tôi phải cài đặt lại:

sudo apt-get install postgresql-8.4

Sau đó, tôi phải chuyển sang 8.4 postgresql.confvà đổi max_connectionsthành 10. Sau đó, nó hoạt động. Bạn sẽ có thể tìm thấy tập tin conf tại/etc/postgresql/8.4/main/postgresql.conf


Trên một máy tính, ba dòng trên cùng là đủ. Mặt khác, tôi đã phải cài đặt lại 8.4 để làm cho nó hoạt động, như bạn nói. Cảm ơn sự giúp đỡ của bạn.
nathanvda

Cần lưu ý rằng tập lệnh "pg_upgradecluster" không xử lý trường hợp người dùng cơ sở dữ liệu phải được cung cấp. (Nếu có, tôi chắc chắn không thể tìm ra cách cung cấp nó.)
Pointy

Nếu bạn nhận được Error: specified cluster is not runningkhi thử lại sau khi đã thay đổi max_connections, hãy sử dụng pg_ctlcluster 8.4 main start.
Skippy le Grand Gourou

Giảm max_connectionskhông làm việc cho tôi. Là một giải pháp thay thế được cung cấp bởi thông báo lỗi, tôi đã giảm xuống còn shared_buffers20 MB (từ 200 MB), hoạt động với tôi.
Serrano

4

Sau khi nâng cấp lên 11.10, PostgreQuery 9.1 đã được cài đặt, nhưng phiên bản đang chạy là 8.4.

Tôi đã thử:

su postgres
pg_dropcluster --stop 9.1 main    
pg_upgradecluster 8.4 main

Nó báo lỗi:

Stopping old cluster...
pg_ctl: servidor não desligou
Error: Could not stop old cluster

Vì vậy, trong một cửa sổ khác:

$ sudo service postgresql-8.4 stop
 * Stopping PostgreSQL 8.4 database server                               [ OK ] 
jgr@cagliari:~$ sudo service postgresql-8.4 start
 * Starting PostgreSQL 8.4 database server                               [ OK ] 

Và sau đó một lần nữa:

pg_upgradecluster 8.4 main

Các lỗi liên quan đến pgRouting đã được báo cáo. Phải mất một lúc (cả đêm!), Nhưng sau đó cơ sở dữ liệu được nâng cấp lên 9.1. PostGIS cũng được nâng cấp lên 1.5.3.


FYI, tôi thấy rằng thực hiện một "du -hs" trong thư mục /var/lib/postgresql/9.1 và sau đó so sánh nó với đầu ra của cùng một lệnh trong /var/lib/postgresql/8.4/, tôi thấy rằng tôi có thể đánh giá mức độ đã được sao chép dựa trên đầu ra kích thước từ lệnh đó.
Joe J

Tôi biết đây không phải là câu hỏi đang được thảo luận. Nhưng tôi gặp vấn đề giống như bạn mô tả. Lý do pg_upgradecluster không thể dừng cụm cũ là vì một cá thể Tomcat đang sử dụng các kết nối và Postgres không thể đóng chúng. Hy vọng điều này sẽ giúp được ai đó.
bplayer

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.