Esecuzione di più versioni di PostgreSQL sullo stesso server Ubuntu


12

Ho PostgreSQL 8.4 e 9.0 in esecuzione sullo stesso server (Ubuntu Lucid).

Li ho installati entrambi tramite apt-get (8.4 con i sorgenti del pacchetto predefinito e 9.0 dopo aver aggiunto il ppa da https://launchpad.net/~pitti/+archive/postgresql ).

Quando eseguo un comando come "Createdb" dalla riga di comando o avvio la shell "psql", PostgreSQL versione 8.4 viene utilizzato per impostazione predefinita sul mio sistema.

Quindi, come posso forzare questi comandi a utilizzare PostgreSQL 9.0 anziché 8.4?


Risposte:


11

Supponendo che Ubuntu faccia la stessa cosa di Debian, le tue due istanze PostGreSQL funzioneranno su porte diverse.

Puoi facilmente controllare i file di configurazione per vedere quale versione è su quale porta:

$ 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

La maggior parte dei comandi PostGreSQL accetta l'opzione "-p ####" o "--port = ####", quindi puoi usarla per selezionare la versione che desideri.


7

Usa l' --clusteropzione es. (Supponendo che entrambi i cluster siano nominati come main di default):

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

Gli schemi generici sono:

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

Per elencare tutti i cluster installati (nome, porta, stato, directory dei dati ecc.) Utilizzare il pg_lsclusterscomando.

Controlla man pg_wrapperper maggiori informazioni.


Questo è geniale come mai questo non è nel documento psql?
MarHoff,

1
@MarHoff: pg_wrapperè l'estensione di Debian. In sostanza, avvolge psql(ovvero è il psqlcollegamento simbolico allo pg_wrapperscript) con diverse nuove opzioni per facilitare la gestione di più cluster.
Grzegorz Szpetkowski il

0

Puoi usare dpkg -L <packagename>per vedere quali file possiede un determinato pacchetto. Eseguilo con il pacchetto postgresql 9 e vedi dove è stato memorizzato il comando Createdb per quella versione.

La maggior parte dei comandi postgresql funzionerebbe in versione incrociata con un'adeguata selezione del database per porta o percorso, ma questo ovviamente non si applica agli script di avvio e ai comandi di creazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.