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.conf
und 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 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?
quelle
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
.deb
Paket 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 startenum die Versionssuche zu überschreiben.
quelle
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