Ausführen mehrerer Versionen von PostgreSQL auf demselben Ubuntu-Server

10

Ich habe PostgreSQL 8.4 und 9.0 auf demselben Server (Ubuntu Lucid) ausgeführt.

Ich habe beide über apt-get installiert (8.4 mit den Standardpaketquellen und 9.0 nach dem Hinzufügen des ppa von https://launchpad.net/~pitti/+archive/postgresql ).

Wenn ich einen Befehl wie "createdb" über die Befehlszeile ausführe oder die "psql" -Shell starte, wird auf meinem System standardmäßig PostgreSQL Version 8.4 verwendet.

Wie erzwinge ich diese Befehle, um PostgreSQL 9.0 anstelle von 8.4 zu verwenden?

Kaffeemühle
quelle
Siehe auch
krlmlr

Antworten:

10

Angenommen, Ubuntu macht dasselbe wie Debian, dann werden Ihre beiden PostGreSQL-Instanzen auf verschiedenen Ports ausgeführt.

Sie können die Konfigurationsdateien leicht überprüfen, um festzustellen, welche Version sich an welchem ​​Port befindet:

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/8.4/main/postgresql.conf:port = 5432
/etc/postgresql/8.3/main/postgresql.conf:port = 5433

Die meisten PostGreSQL-Befehle verwenden die Option "-p ####" oder "--port = ####", sodass Sie damit die gewünschte Version auswählen können.

Gagravarr
quelle
6

Verwenden Sie --clusterz. B. die Option (vorausgesetzt, beide Cluster werden als Standardhaupt angegeben):

psql --cluster 8.4/main
psql --cluster 9.0/main

Generische Schemata sind:

--cluster version/name      # for local connections
--cluster version/host:port # for TCP/IP connections

Verwenden Sie den pg_lsclustersBefehl, um alle installierten Cluster (Name, Port, Status, Datenverzeichnis usw.) aufzulisten.

Überprüfen Sie man pg_wrapperfür weitere Informationen.

Grzegorz Szpetkowski
quelle
Das ist genial, warum ist das nicht im psql-Dokument?
MarHoff
1
@ MarHoff: Das pg_wrapperist Debians Erweiterung. Im Wesentlichen umschließt es den Befehl psql( dh psqleine symbolische Verknüpfung zum pg_wrapperSkript) mit mehreren neuen Optionen, um die Handhabung mehrerer Cluster zu erleichtern.
Grzegorz Szpetkowski
0

Sie können verwenden, um dpkg -L <packagename>zu sehen, welche Dateien ein bestimmtes Paket besitzt. Führen Sie es mit dem Paket postgresql 9 aus und sehen Sie, wo der Befehl createdb für diese Version gespeichert wurde.

Die meisten postgresql-Befehle funktionieren versionübergreifend mit einer geeigneten Auswahl der Datenbank nach Port oder Pfad, dies gilt jedoch natürlich nicht für das Starten von Skripten und Erstellungsbefehlen.

Seth Robertson
quelle