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


Ich benutze Ubuntu 12.04 auf Oracle VirtualBox. Vor ein paar Monaten habe ich PostgreSQL Server Version 9.1 auf meinem Rechner installiert. Erst vor kurzem habe ich erfahren, dass PostgreSQL Server 9.3 JSON-Datentypen unterstützt, also entschied ich mich für ein Upgrade.

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 installierte Server Version 9.3 auf meinem Computer neben Version 9.1. Wenn pg_lsclusters nach einem Neustart neu gestartet wird, gibt dies Folgendes aus:

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 von meinem 9.1 Server mit pg_dump exportiert und sie auf meinem 9.3 Server wiederhergestellt. Ich habe dann meine Konfigurationsdateien für 9.1 und 9.3 geöffnet /etc/postgresql/$VERSION/main/postgresql.conf und vertauschte ihre Portnummern, so dass mein psql-Client standardmäßig eine Verbindung zum neuen Server herstellt.

Meine Frage ist das. Sowohl 9.1 als auch 9.3 starten beim Booten. Ich möchte 9.1 vor dem automatischen Booten schützen, da es ungefähr 5% meines Systemspeichers beansprucht. Wie kann ich das machen?

Ressourcen konsultiert:

Die PostgreSQL Doc-Seite beim Starten eines Servers verweist mich auf das Standard-Verzeichnis init.d. Mein init.d-Verzeichnis enthält das Skript postgresql. Es sieht so aus, als könnte dieses Skript so konfiguriert werden, 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 Beitrag unten war sehr informativ, aber er zeigt, wie man einen Cluster entfernt und nicht wie man ihn beim Start deaktiviert. Ich würde gerne meinen älteren Cluster installiert lassen, da ich vielleicht weitere Informationen von ihm abrufen möchte.

Ich denke, ich habe mehrere Postgresql-Server installiert, wie identifiziere ich und lösche die "Extra" Server?

Ich habe erwogen, ein Skript zu schreiben, um den Server zu töten, sobald das System fertig geladen ist, aber das scheint ineffizient zu sein. Gibt es eine sauberere Möglichkeit, Version 9.1 beim Booten zu deaktivieren?


22
2018-03-17 00:23


Ursprung




Antworten:


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


38
2018-03-17 21:28



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


Debian erstellte mehrere Skripte (wie die Cluster-Dienstprogramme pg_ *), 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 mir nicht sicher, ob PostgreSQL selbst ist .deb Paket verwendet den gleichen Startup-Mechanismus wie Debian, schaut aber auf das Paket, das ich habe, wenn Sie erstellen /etc/init.d/postgresql-9.1 (auch wenn es eine leere Datei ist) /etc/init.d/postgresql Es wird davon ausgegangen, dass Sie diese Version separat steuern und nicht standardmäßig starten möchten. Sie können es immer noch mit starten

service postgresql start 9.1

Überschreiben der Versionssuche


10
2018-03-17 00:53



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