Ejecutar múltiples versiones de PostgreSQL en el mismo servidor Ubuntu

12

Tengo PostgreSQL 8.4 y 9.0 ejecutándose en el mismo servidor (Ubuntu Lucid).

Los instalé a través de apt-get (8.4 con las fuentes de paquete predeterminadas y 9.0 después de agregar el ppa desde https://launchpad.net/~pitti/+archive/postgresql ).

Cuando ejecuto un comando como "createdb" desde la línea de comandos o inicio el shell "psql", la versión 8.4 de PostgreSQL se usa de manera predeterminada en mi sistema.

Entonces, ¿cómo forzo estos comandos a usar PostgreSQL 9.0 en lugar de 8.4?

molinillo de cafe
fuente
Relacionado: serverfault.com/q/582499/95758
krlmlr

Respuestas:

11

Suponiendo que Ubuntu hace lo mismo que Debian, sus dos instancias PostGreSQL se ejecutarán en diferentes puertos.

Puede verificar fácilmente los archivos de configuración para ver qué versión está en qué puerto:

$ 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 mayoría de los comandos PostGreSQL toman la opción "-p ####" o "--port = ####", por lo que puede usar eso para seleccionar la versión que desee.

Gagravarr
fuente
7

Use la --clusteropción, por ejemplo (suponiendo que ambos clústeres se denominen como main por defecto):

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

Los esquemas genéricos son:

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

Para enumerar todos los clústeres instalados (nombre, puerto, estado, directorio de datos, etc.) use el pg_lsclusterscomando.

Consulte man pg_wrapperpara más información.

Grzegorz Szpetkowski
fuente
Esto es genial, ¿cómo es que esto no está en el psql doc?
MarHoff
1
@MarHoff: pg_wrapperes la extensión de Debian. Básicamente, envuelve el comando psql(es decir, psqles un enlace simbólico al pg_wrapperscript) con varias opciones nuevas para facilitar el manejo de múltiples clústeres.
Grzegorz Szpetkowski el
0

Puede usar dpkg -L <packagename>para ver qué archivos posee un paquete en particular. Ejecútelo con el paquete postgresql 9 y vea dónde se almacenó el comando createdb para esa versión.

La mayoría de los comandos postgresql funcionarían en versión cruzada con la selección adecuada de la base de datos por puerto o ruta, pero esto, por supuesto, no se aplica a los scripts de inicio y los comandos de creación.

Seth Robertson
fuente