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

24

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

Ich habe ein Upgrade auf 9.3 durchgeführt, indem ich den Anweisungen hier gefolgt bin:

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 installierte Server Version 9.3 auf meinem Computer neben Version 9.1. Wenn Sie pg_lsclusters nach einem Neustart ausführen, erhalten Sie Folgendes:

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

Anschließend habe ich nach dem Upgrade folgende Wartungsarbeiten durchgeführt: Ich habe mehrere Tabellen mit pg_dump von meinem 9.1-Server exportiert und auf meinem 9.3-Server wiederhergestellt. Ich öffnete dann meine Konfigurationsdateien für 9.1 und 9.3 um /etc/postgresql/$VERSION/main/postgresql.confund tauschte ihre Portnummern aus, so dass mein psql-Client standardmäßig eine Verbindung zum neuen Server herstellt.

Meine Frage ist das. Sowohl 9.1 als auch 9.3 werden beim Booten gestartet. Ich möchte verhindern, dass 9.1 automatisch hochfährt, 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 init.d-Verzeichnis 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?

BitPusher16
quelle

Antworten:

43

Für weniger einen Hack, bearbeiten /etc/postgresql/9.1/main/start.confund ersetzen automit manualoder disabled.

ch2500
quelle
Danke ch2500! Diese Lösung ist intuitiv und macht genau das, was ich brauche.
BitPusher16
Ich habe mehrere Stunden lang nach einer solchen Antwort gesucht. DANKE immens.
Jonathan Vanasco
10

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

Ich bin nicht sicher, ob PostgreSQLs eigenes .debPaket den gleichen Startmechanismus wie Debian verwendet, aber wenn Sie das Paket erstellen /etc/init.d/postgresql-9.1(auch wenn es eine leere Datei ist) /etc/init.d/postgresql, gehen Sie davon aus, dass Sie diese Version separat steuern möchten und dies nicht starte es standardmäßig. Sie können es trotzdem mit starten

service postgresql start 9.1

um die Versionssuche zu überschreiben.

DerfK
quelle
Danke DerfK, das hat funktioniert. Ich habe die von Ihnen vorgeschlagene Datei erstellt, einen Hash-Knall eingefügt und sie ausführbar gemacht. Beim Neustart gab pg_lsclusters Folgendes aus: 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
Die Pakete des PostgreSQL-Debian-Paketteams sind mit denen von Debian identisch. Sie sollten die pg_ * -Clusterinfrastruktur verwenden, anstatt Ihre eigenen sysv init-Startskripte zu hacken.
Michael Renner