Làm cách nào để nâng cấp PostgreSQL từ phiên bản 8.4 lên 9.4?


18

Tôi muốn nâng cấp PostgreSQL của tôi từ phiên bản 8.4 lên 9.4 .

Các tài liệu không rõ ràng cho tôi.

  1. Tôi sẽ mất cơ sở dữ liệu cũ nếu tôi nâng cấp?
  2. Làm cách nào tôi có thể sao lưu cơ sở dữ liệu cũ của mình nếu tôi mất chúng sau khi nâng cấp?
  3. Làm thế nào tôi có thể nâng cấp psql của tôi?

PostgreSQL của tôi đang chạy trên máy chủ CentOS 6.6 .


Thành thật mà nói, mô tả rất rõ ràng trên trang được liên kết. Lấy một bãi chứa có nghĩa là bạn có một bãi chứa cho trường hợp một cái gì đó không hoạt động. Điều đó cũng có nghĩa là bạn không mất nó. Hơn nữa, có một liên kết trên trang đó chỉ ra cách thực sự cài đặt phiên bản mới hơn - ví dụ, trên Ubuntu, có một postgresql-client-9.4gói chứa psql.
dezso

@dezso Vậy nếu tôi gỡ cài đặt psql 8.4 và đi phiên bản 9.4, tôi sẽ mất cơ sở dữ liệu cũ?
Alex Jolig

3
Nếu bạn lấy một bãi của họ, thì không. Dù sao thì bạn cũng nên có các bản sao lưu thường xuyên mà bạn kiểm tra khả năng phục hồi, vì vậy điều này hoàn toàn không có vấn đề gì. Ngoài ra, nếu bạn chọn sử dụng pg_upgrade, nó sẽ giữ DB của bạn - nhưng trong trường hợp này cũng phải có một bản sao lưu.
dezso

" How can I backup my old databases if" - không có nếu . Cơ sở dữ liệu của bạn gần như chắc chắn sẽ hoàn toàn ổn sau khi nâng cấp nhưng bạn phải luôn có các bản sao lưu mới (tốt nhất là đã được kiểm tra) khi thực hiện một thao tác như thế này trong trường hợp có sự cố không mong muốn (giả sử là tồi tệ nhất: cắt điện hoặc phần lỗi lỗi phần cứng khác có thể để lại bạn ở một vị trí rất khó để quay trở lại hoặc chuyển tiếp từ). Tùy thuộc vào gói sao lưu thường xuyên của bạn, bạn có thể không cần phải sao lưu thêm.
David Spillett

Câu trả lời:


25

Đây là cách tôi giải quyết vấn đề của mình.

Nâng cấp Postgresql 8.4 lên 9.4 trong Centos

 1. Yum Install PG9.4
 2. wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
 3. yum install pgdg-redhat94-9.4-1.noarch.rpm
 4. yum install postgresql94-server
 5. service postgresql-9.4 initdb
 6. chkconfig postgresql-9.4 on

Dữ liệu sao lưu

 7. su - postgres

 8. pg_dumpall > dump.sql

Khôi phục dữ liệu

 9. service postgresql stop

 10. service postgresql-9.4 start

 11. su - postgres

 12. psql < dump.sql

Cấu hình truy cập mạng

vi /var/lib/pgsql/9.4/data/postgresql.conf

 1. listen_addresses = '*'
 2. port = 5432

/var/lib/pgsql/9.4/data/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          ident
host    all         all         130.51.79.0/24        md5
host    all         all         10.210.29.0/24        md5
# IPv6 local connections:
host    all         all         ::1/128               ident

Xóa PG8.4

 1. yum remove postgresql
 2. ln -s /usr/pgsql-9.4/bin/psql /usr/local/bin/psql

3
Tôi không chắc tại sao bạn từ chối bản chỉnh sửa của tôi là "khả năng đọc có hại". Nó thực sự làm cho các lệnh dễ sao chép hơn,
nhahtdh

1
Tôi mới thực hiện nâng cấp từ 9.2 lên 9.6 bằng phương pháp này và nó đã hoạt động. Cảm ơn !
EisenHeim

Tôi nghĩ rằng không thể sử dụng pgdump để di chuyển cơ sở dữ liệu với terabyte dữ liệu chẳng hạn. Có cách nào khác để làm điều đó?
deFreitas

Hoặc là lệnh đầu tiên, "Yum Install PG9.4", đó có phải là cách viết hoa đúng cho mọi thứ không?
Dave

1
@deFreitas Tôi hơi muộn nhưng bạn có thể sử dụng pg_upgradenếu nâng cấp từ> = 8.4 và nếu bạn sử dụng cùng một máy chủ. pg_upgradelà hữu ích trong trường hợp này và thực sự nhanh hơn: trên Ubuntu 18, tôi mất ít thời gian pg_upgradehơn so với pg_dumpviệc khôi phục cơ sở dữ liệu 1GB. Mặt trái là bạn phải cài đặt và chạy 2 phiên bản postgres trong cùng một máy (tất nhiên là nghe các cổng khác nhau).
EAmez

3

service postgresql-9.4initdb không hoạt động với tôi, tôi phải sử dụng sudo /usr/pgsql-9.4/bin/postgresql94-setup initdb(tìm thấy ở đây ).

Cảm ơn các hướng dẫn tuyệt vời, tôi đã có thể cập nhật từ 9.2 đến 9.4 mà không gặp vấn đề gì, mặc dù tôi phải cấu hình lại pg_hba.conftệp của mình , điều đó thật tầm thường.


1

Tốt hơn so với việc liên kết một nhị phân psg postgresql94 với / usr / (local /) là sử dụng hệ thống thay thế:

cd /etc/alternatives/
ls pgsql-* -1 | xargs -L 1 alternatives --auto

Tạo liên kết của nhị phân, mans, confs, ... của postgresql94 đến các thư mục mặc định cho CentOS.

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.