Exécution de plusieurs versions de PostgreSQL sur le même serveur Ubuntu

12

J'ai PostgreSQL 8.4 et 9.0 fonctionnant sur le même serveur (Ubuntu Lucid).

Je les ai installés tous les deux via apt-get (8.4 avec les sources de paquets par défaut, et 9.0 après avoir ajouté le ppa depuis https://launchpad.net/~pitti/+archive/postgresql ).

Lorsque j'exécute une commande comme "createdb" à partir de la ligne de commande ou démarre le shell "psql", PostgreSQL version 8.4 est utilisé par défaut sur mon système.

Alors, comment puis-je forcer ces commandes à utiliser PostgreSQL 9.0 au lieu de 8.4?

Moulin à café
la source

Réponses:

11

En supposant qu'Ubuntu fait la même chose que Debian, vos deux instances PostGreSQL s'exécuteront sur des ports différents.

Vous pouvez facilement vérifier les fichiers de configuration pour voir quelle version se trouve sur quel port:

$ 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 plupart des commandes PostGreSQL prennent l'option "-p ####" ou "--port = ####", vous pouvez donc l'utiliser pour sélectionner la version souhaitée.

Gagravarr
la source
7

Utilisez l' --clusteroption par exemple (en supposant que les deux clusters sont nommés comme principaux par défaut):

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

Les schémas génériques sont:

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

Pour répertorier tous les clusters installés (nom, port, état, répertoire de données, etc.), utilisez la pg_lsclusterscommande.

Vérifiez man pg_wrapperpour plus d'informations.

Grzegorz Szpetkowski
la source
C'est génial, comment se fait-il que ce ne soit pas dans la doc psql?
MarHoff
1
@MarHoff: pg_wrapperc'est l'extension de Debian. Essentiellement, il encapsule psql(c'est-à-dire psqlest un lien symbolique vers le pg_wrapperscript) la commande avec plusieurs nouvelles options pour faciliter la gestion de plusieurs clusters.
Grzegorz Szpetkowski
0

Vous pouvez utiliser dpkg -L <packagename>pour voir quels fichiers un package particulier possède. Exécutez-le avec le package postgresql 9 et voyez où la commande createdb pour cette version a été stockée.

La plupart des commandes postgresql fonctionneraient entre les versions avec une sélection appropriée de la base de données par port ou chemin, mais cela ne s'applique bien sûr pas aux scripts de démarrage et aux commandes de création.

Seth Robertson
la source