sudo /etc/init.d/postgresql restart (como escolher qual instalação?)

5

Eu tenho duas instalações postgresql:

$ sudo /etc/init.d/postgresql status
9.1/main (port 5432): online
9.2/main (port 5433): online

Eu estava acostumado a reiniciar o banco de dados postgres fazendo:

$ sudo /etc/init.d/postgresql restart

... mas agora que há dois deles, como escolher qual deles reiniciar?

UPDATE : seguindo a resposta que recebi de Micah Yoder eu fiz um:

/usr/lib/postgresql/9.2/bin/pg_ctl -D /var/lib/postgresql/9.2/main restart

que foi encontrado com "não foi possível abrir o arquivo PID /var/lib/postgresql/9.2/main/main/postmaster.pid permission denied". Quando tentei executar o pg_ctl em uma sessão sudo-i , encontrei:

pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

Como devo executar o programa pg_ctl ? Também não vejo por que tenho que indicar o arquivo de dados para uma reinicialização. O processo não sabe qual arquivo de dados está usando?

UPDATE 2 Finalmente desisti do pg_ctl e fiz um:

sudo /etc/init.d/postgresql restart 9.2

.. conforme a resposta aceita.

    
por Marcus Junius Brutus 05.04.2013 / 17:52

3 respostas

5

Se você está usando o debian, você pode dizer o script de inicialização, qual (is) versão (s) você deseja gerenciar:

pg01:~# /etc/init.d/postgresql       
Usage: /etc/init.d/postgresql {start|stop|restart|reload|force-reload|status} [version ..]
pg01:~#
    
por 05.04.2013 / 18:40
2

Primeiro, você está executando dois lado a lado intencionalmente ou acabou de instalar o 9.2 a partir de um pacote diferente e ele não removeu o 9.1? (Os pacotes Postgres agora são geralmente configurados dessa forma.) Se você migrou, o 9.1 deve ser removido.

Se você precisar de ambos, cada um deve ter seu próprio executável pg_ctl, que pode fazer a mesma coisa que o initscript normal. Execute-o como o usuário 'postgres'. Vejo     ... / caminho / bin / pg_ctl --help

    
por 05.04.2013 / 18:23
0

Você provavelmente está tendo duas instâncias postgresql em execução usando dois arquivos de configurações diferentes chamados postgresql.conf armazenados em dois locais.

Você deve verificar o arquivo /etc/sysconfig/pgsql/postgresql config para verificar qual pgsql está usando para /etc/init.d/postgresql . Deve ter a localização do diretório pgsql onde o arquivo postgresql.conf será armazenado. Neste arquivo conf, haverá um número de porta para esse pgsql específico.

    
por 05.04.2013 / 18:33

Tags