Executando várias versões do PostgreSQL no mesmo servidor Ubuntu

8

Eu tenho PostgreSQL 8.4 e 9.0 rodando no mesmo servidor (Ubuntu Lucid).

Instalei os dois através do apt-get (8.4 com as fontes de pacotes padrão e 9.0 depois de adicionar o ppa de link ).

Quando eu executo um comando como "createdb" a partir da linha de comando ou inicio o shell "psql", o PostgreSQL versão 8.4 é usado por padrão no meu sistema.

Então, como eu forço esses comandos a usar o PostgreSQL 9.0 em vez de 8.4?

    
por coffee-grinder 22.03.2011 / 06:22

3 respostas

6

Assumindo que o Ubuntu faça o mesmo que o Debian, então suas duas instâncias do PostGreSQL estarão rodando em portas diferentes.

Você pode verificar facilmente os arquivos de configuração para ver qual versão está em qual 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

A maioria dos comandos PostGreSQL toma a opção "-p ####" ou "--port = ####", então você pode usar isso para selecionar a versão que você quer.

    
por 10.06.2011 / 12:21
4

Use a opção --cluster , por exemplo (assumindo que ambos os clusters são nomeados como padrão main):

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

Os esquemas genéricos são:

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

Para listar todos os clusters instalados (nome, porta, status, diretório de dados, etc.), use o comando pg_lsclusters .

Verifique man pg_wrapper para mais informações.

    
por 10.06.2011 / 12:33
0

Você pode usar dpkg -L <packagename> para ver quais arquivos um pacote específico possui. Execute-o com o pacote postgresql 9 e veja onde o comando createdb para essa versão foi armazenado.

A maioria dos comandos postgresql funcionaria em versões cruzadas com a seleção apropriada do banco de dados por porta ou caminho, mas isso obviamente não se aplica a iniciar scripts e comandos de criação.

    
por 24.05.2011 / 20:30