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?


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.


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.