Chạy nhiều phiên bản PostgreSQL trên cùng một máy chủ Ubuntu


12

Tôi có PostgreSQL 8.4 và 9.0 chạy trên cùng một máy chủ (Ubuntu Lucid).

Tôi đã cài đặt cả hai thông qua apt-get (8.4 với các nguồn gói mặc định và 9.0 sau khi thêm ppa từ https://launchpad.net/~pitti/+archive/postgresql ).

Khi tôi chạy một lệnh như "createdb" từ dòng lệnh hoặc khởi động shell "psql", PostgreQuery phiên bản 8.4 được sử dụng theo mặc định trên hệ thống của tôi.

Vậy, làm cách nào để buộc các lệnh này sử dụng PostgreSQL 9.0 thay vì 8.4?


Câu trả lời:


11

Giả sử Ubuntu làm điều tương tự như Debian, thì hai phiên bản PostGreQuery của bạn sẽ chạy trên các cổng khác nhau.

Bạn có thể dễ dàng kiểm tra các tệp cấu hình để xem phiên bản nào trên cổng nào:

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433

Hầu hết các lệnh PostGreSQL đều có tùy chọn "-p ####" hoặc "--port = ####", vì vậy bạn có thể sử dụng tùy chọn đó để chọn phiên bản bạn muốn.


7

Sử dụng --clustertùy chọn, ví dụ (giả sử rằng cả hai cụm được đặt tên là chính mặc định):

psql --cluster 8.4/main
psql --cluster 9.0/main

Các lược đồ chung là:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections

Để liệt kê tất cả các cụm được cài đặt (tên, cổng, trạng thái, thư mục dữ liệu, v.v.) sử dụng pg_lsclusterslệnh.

Kiểm tra man pg_wrapperđể biết thêm thông tin.


Điều này thật tuyệt vời tại sao điều này không có trong tài liệu psql?
MarHoff

1
@MarHoff: Phần pg_wrappermở rộng của Debian. Về cơ bản, nó kết thúc psql(nghĩa là psqlliên kết tượng trưng đến pg_wrappertập lệnh) với một số tùy chọn mới để tạo điều kiện xử lý nhiều cụm.
Grzegorz Szpetkowski

0

Bạn có thể sử dụng dpkg -L <packagename>để xem những tập tin mà một gói cụ thể sở hữu. Chạy nó với gói postgresql 9 và xem lệnh createdb cho phiên bản đó được lưu trữ ở đâu.

Hầu hết các lệnh postgresql sẽ hoạt động phiên bản chéo với lựa chọn cơ sở dữ liệu phù hợp theo cổng hoặc đường dẫn, nhưng điều này tất nhiên không áp dụng để bắt đầu các tập lệnh và lệnh tạo.

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.