Tôi đã cài đặt nhiều máy chủ PostgreSQL. Làm cách nào để tắt tự động khởi động cho máy chủ cũ?


24

Tôi đang chạy Ubuntu 12.04 trên Oracle VirtualBox. Vài tháng trước, tôi đã cài đặt máy chủ PostgreSQL phiên bản 9.1 trên máy của mình. Gần đây, tôi biết rằng máy chủ PostgreQuery 9.3 hỗ trợ các kiểu dữ liệu JSON, vì vậy tôi quyết định nâng cấp.

Tôi đã nâng cấp lên 9.3 bằng cách làm theo các hướng dẫn ở đây:

https://wiki.postgresql.org/wiki/Apt

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.3 pgadmin3

Máy chủ này đã cài đặt phiên bản 9.3 trên máy của tôi cùng với phiên bản 9.1. Chạy pg_lscluster sau khi khởi động mới cho:

Ver Cluster Port Status Owner    Data directory               Log file
9.1 main    5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main    5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

Sau đó tôi đã thực hiện bảo trì sau nâng cấp sau: Tôi đã xuất một số bảng từ máy chủ 9.1 của mình với pg_dump và khôi phục chúng vào máy chủ 9.3 của mình. Sau đó, tôi đã mở các tệp cấu hình của mình cho 9.1 và 9.3 tại /etc/postgresql/$VERSION/main/postgresql.confvà hoán đổi số cổng của chúng để máy khách psql của tôi kết nối với máy chủ mới theo mặc định.

Câu hỏi của tôi là này. Cả 9.1 và 9.3 đều khởi động khi khởi động. Tôi muốn ngăn 9.1 tự động khởi động, vì nó chiếm khoảng 5% bộ nhớ hệ thống của tôi. Tôi có thể làm cái này như thế nào?

Tài nguyên tham khảo:

Trang tài liệu PostgreQuery khi bắt đầu một máy chủ chỉ cho tôi đến thư mục init.d tiêu chuẩn. Thư mục init.d của tôi không chứa tập lệnh postgresql. Có vẻ như tập lệnh này có thể được cấu hình để chỉ khởi chạy một phiên bản, nhưng đối với tôi, sự thay đổi bắt buộc không rõ ràng.

http://www.postgresql.org/docs/9.1/interactive/server-start.html

Bài viết dưới đây rất nhiều thông tin, nhưng nó cho thấy cách loại bỏ một cụm chứ không phải làm thế nào để vô hiệu hóa một cụm khi khởi động. Tôi muốn để lại cụm cũ hơn của tôi được cài đặt, vì tôi có thể muốn lấy thêm thông tin từ nó.

Tôi nghĩ rằng tôi đã cài đặt nhiều máy chủ postgresql, làm cách nào để xác định và xóa các máy chủ 'phụ'?

Tôi đã xem xét việc viết một kịch bản để giết máy chủ khi hệ thống tải xong, nhưng điều này có vẻ không hiệu quả. Có cách nào sạch hơn để vô hiệu hóa phiên bản 9.1 khi khởi động không?

Câu trả lời:


43

Để bớt hack, hãy chỉnh sửa /etc/postgresql/9.1/main/start.confvà thay thế autobằng manualhoặc disabled.


Cảm ơn ch2500! Giải pháp này là trực quan và thực hiện chính xác những gì tôi cần nó.
BitPizer16

Tôi đã tìm kiếm một câu trả lời như thế này trong nhiều giờ. CẢM ƠN BẠN.
Jonathan Vanasco

10

Debian đã tạo một số tập lệnh (như các tiện ích cụm pg_ *) để đơn giản hóa việc chạy nhiều phiên bản hoặc cài đặt PostgreQuery trên một máy chủ, đó là lý do tại sao điều này không được ghi lại trên postgresql.org.

Tôi không chắc liệu .debgói riêng của PostgreQuery có sử dụng cùng một cơ chế khởi động như Debian hay không, nhưng nhìn vào gói tôi có, nếu bạn tạo /etc/init.d/postgresql-9.1(ngay cả khi đó là tệp trống) thì /etc/init.d/postgresqlsẽ cho rằng bạn muốn kiểm soát phiên bản đó một cách riêng biệt và sẽ không bắt đầu nó theo mặc định Bạn vẫn có thể bắt đầu nó với

service postgresql start 9.1

để ghi đè tìm kiếm phiên bản.


Cảm ơn DerfK, điều này đã làm việc. Tôi đã tạo một tập tin mà bạn đề xuất, đặt một hàm băm trong đó và làm cho nó có thể thực thi được. Khi tôi khởi động lại, pg_lscluster đã cho: Ver Cluster Port Status Owner Data directory Log file 9.1 main 5433 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log 9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
BitPizer16

Các gói từ nhóm đóng gói Debian PostgreSQL giống hệt với các gói từ Debian. Bạn nên sử dụng cơ sở hạ tầng cụm pg_ * thay vì hack các tập lệnh khởi động sysv init của riêng bạn.
Michael Renner
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.