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?


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.


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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.