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.conf
i 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.
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?
źródło
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
.deb
pakiet 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ąćaby zastąpić wyszukiwanie wersji.
źródło
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