Mam zainstalowanych wiele serwerów PostgreSQL. Jak wyłączyć automatyczne uruchamianie starszego serwera?

24

Używam Ubuntu 12.04 na Oracle VirtualBox. Kilka miesięcy temu zainstalowałem na moim komputerze serwer PostgreSQL w wersji 9.1. Niedawno dowiedziałem się, że serwer PostgreSQL 9.3 obsługuje typy danych JSON, więc zdecydowałem się na aktualizację.

Uaktualniłem do wersji 9.3, postępując zgodnie z instrukcjami tutaj:

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

Zainstalowana wersja serwera 9.3 na moim komputerze wraz z wersją 9.1. Uruchamianie pg_lsclusters po świeżym rozruchu daje:

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

Następnie wykonałem następującą konserwację po aktualizacji: wyeksportowałem kilka tabel z mojego serwera 9.1 za pomocą pg_dump i przywróciłem je na mój serwer 9.3. Następnie otworzyłem moje pliki konfiguracyjne dla wersji 9.1 i 9.3 /etc/postgresql/$VERSION/main/postgresql.confi zamieniłem ich numery portów, aby mój klient psql domyślnie łączył się z nowym serwerem.

Moje pytanie brzmi: Zarówno 9.1, jak i 9.3 uruchamiają się przy starcie systemu. Chciałbym zapobiec automatycznemu uruchamianiu systemu 9.1, ponieważ zajmuje on około 5% mojej pamięci systemowej. W jaki sposób mogę to zrobić?

Zasoby konsultowane:

Strona dokumentacji PostgreSQL po uruchomieniu serwera wskazuje mi standardowy katalog init.d. Mój katalog init.d zawiera skrypt postgresql. Wygląda na to, że ten skrypt można skonfigurować tak, aby uruchamiał tylko jedną wersję, ale wymagana zmiana nie jest dla mnie oczywista.

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

Poniższy post był bardzo pouczający, ale pokazuje, jak usunąć klaster, a nie jak wyłączyć go podczas uruchamiania. Chciałbym zostawić mój starszy klaster zainstalowany, ponieważ mogę chcieć uzyskać z niego dalsze informacje.

Wydaje mi się, że mam zainstalowanych wiele serwerów Postgresql. Jak mogę zidentyfikować i usunąć te „dodatkowe”?

Rozważałem napisanie skryptu, aby zabić serwer po zakończeniu ładowania systemu, ale wydaje się to nieefektywne. Czy istnieje prostszy sposób na wyłączenie wersji 9.1 podczas rozruchu?

BitPusher 16
źródło

Odpowiedzi:

43

Dla mniej hack, edytować /etc/postgresql/9.1/main/start.confi zastąpić autoz manuallub disabled.

ch2500
źródło
Dzięki ch2500! To rozwiązanie jest intuicyjne i robi dokładnie to, czego potrzebuję.
BitPusher16,
Od kilku godzin szukam takiej odpowiedzi. DZIĘKUJĘ niezmiernie.
Jonathan Vanasco
10

Debian stworzył kilka skryptów (takich jak narzędzia klastrowe pg_ *), aby uprościć uruchamianie wielu wersji lub instalacji PostgreSQL na jednym serwerze, dlatego nie jest to udokumentowane na postgresql.org.

Nie jestem pewien, czy własny .debpakiet PostgreSQL korzysta z tego samego mechanizmu uruchamiania, co Debian, ale patrząc na pakiet, który mam, jeśli utworzysz /etc/init.d/postgresql-9.1(nawet jeśli jest to pusty plik) /etc/init.d/postgresql, założysz, że chcesz kontrolować tę wersję osobno i nie będzie uruchom go domyślnie. Nadal możesz zacząć

service postgresql start 9.1

aby zastąpić wyszukiwanie wersji.

DerfK
źródło
Dzięki, DerfK, to zadziałało. Utworzyłem plik, który zasugerowałeś, umieściłem w nim hash bang i sprawiłem, że jest wykonywalny. Kiedy zrestartowałem, pg_lsclusters dał: 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
BitPusher16
Pakiety z zespołu pakującego PostgreSQL Debian są identyczne z pakietami z Debiana. Powinieneś użyć infrastruktury klastrowej pg_ * zamiast zhakować własne skrypty startowe sysv init.
Michael Renner