it-swarm.com.de

Ich habe mehrere PostgreSQL-Server installiert. Wie deaktiviere ich den automatischen Start für ältere Server?

Ich verwende Ubuntu 12.04 unter Oracle VirtualBox. Vor ein paar Monaten habe ich PostgreSQL Server Version 9.1 auf meinem Computer installiert. Erst kürzlich habe ich erfahren, dass PostgreSQL Server 9.3 JSON-Datentypen unterstützt, und habe mich daher für ein Upgrade entschieden.

Ich habe ein Upgrade auf 9.3 durchgeführt, indem ich die Anweisungen hier befolgt habe:

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

Dieser Server hat Version 9.3 neben Version 9.1 auf meinem Computer installiert. Das Ausführen von pg_lsclusters nach einem Neustart ergibt:

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

Ich habe dann die folgende Wartung nach dem Upgrade durchgeführt: Ich habe mehrere Tabellen mit pg_dump von meinem 9.1-Server exportiert und auf meinem 9.3-Server wiederhergestellt. Ich habe dann meine Konfigurationsdateien für 9.1 und 9.3 unter /etc/postgresql/$VERSION/main/postgresql.conf und tauschten ihre Portnummern aus, so dass mein psql-Client standardmäßig eine Verbindung zum neuen Server herstellt.

Meine Frage ist dies. Sowohl 9.1 als auch 9.3 werden beim Booten gestartet. Ich möchte verhindern, dass 9.1 automatisch gestartet wird, da es ungefähr 5% meines Systemspeichers beansprucht. Wie kann ich das machen?

Konsultierte Ressourcen:

Die PostgreSQL-Dokumentseite beim Starten eines Servers verweist mich auf das Standardverzeichnis init.d. Mein Verzeichnis init.d enthält das Skript postgresql. Es sieht so aus, als ob dieses Skript so konfiguriert werden kann, dass nur eine Version gestartet wird, aber die erforderliche Änderung ist für mich nicht offensichtlich.

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

Der folgende Beitrag war sehr informativ, zeigt jedoch, wie ein Cluster entfernt und nicht beim Start deaktiviert wird. Ich möchte meinen älteren Cluster installiert lassen, da ich möglicherweise weitere Informationen daraus abrufen möchte.

Ich glaube, ich habe mehrere Postgresql-Server installiert. Wie identifiziere und lösche ich die 'zusätzlichen'?

Ich habe überlegt, ein Skript zu schreiben, um den Server zu beenden, sobald das System vollständig geladen ist, aber dies scheint ineffizient zu sein. Gibt es eine sauberere Möglichkeit, Version 9.1 beim Booten zu deaktivieren?

25
BitPusher16

Für weniger Hack bearbeiten Sie /etc/postgresql/9.1/main/start.conf und ersetzen Sie auto durch manual oder disabled.

46
ch2500

Debian hat mehrere Skripte (wie die Cluster-Dienstprogramme pg_ *) erstellt, um das Ausführen mehrerer Versionen oder Installationen von PostgreSQL auf einem einzelnen Server zu vereinfachen. Aus diesem Grund ist dies auf postgresql.org nicht dokumentiert.

Ich bin mir nicht sicher, ob das PostgreSQL-eigene .deb - Paket denselben Startmechanismus wie Debian verwendet, aber wenn Sie sich das Paket ansehen, das Sie haben, wenn Sie /etc/init.d/postgresql-9.1 Erstellen (auch wenn es eine leere Datei ist), dann /etc/init.d/postgresql Geht davon aus, dass Sie diese Version separat steuern möchten, und startet sie nicht standardmäßig. Sie können es immer noch mit beginnen

service postgresql start 9.1

um die Versionssuche zu überschreiben.

10
DerfK