Eu tenho vários servidores PostgreSQL instalados. Como desabilito a inicialização automática para um servidor antigo?

24

Estou executando o Ubuntu 12.04 no Oracle VirtualBox. Há alguns meses, instalei a versão 9.1 do servidor PostgreSQL na minha máquina. Recentemente, eu aprendi que o servidor PostgreSQL 9.3 suporta tipos de dados JSON, então decidi atualizar.

Atualizei para a 9.3 seguindo as instruções aqui:

https://wiki.postgresql.org/wiki/Apt

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install postgresql-9.3 pgadmin3

Este servidor instalado versão 9.3 na minha máquina, juntamente com a versão 9.1. A execução de pg_lsclusters após uma nova inicialização fornece:

Ver Cluster Port Status Owner    Data directory               Log file
9.1 main    5433 online postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log
9.3 main    5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log

Fiz a seguinte manutenção pós-atualização: Exportei várias tabelas do meu servidor 9.1 com pg_dump e as restaurei no meu servidor 9.3. Abri meus arquivos de configuração para 9.1 e 9.3 /etc/postgresql/$VERSION/main/postgresql.confe troquei seus números de porta para que meu cliente psql se conectasse ao novo servidor por padrão.

Minha pergunta é essa. Os 9.1 e 9.3 iniciam na inicialização. Gostaria de impedir que a versão 9.1 seja inicializada automaticamente, pois ela ocupa aproximadamente 5% da memória do meu sistema. Como posso fazer isso?

Recursos consultados:

A página de documento do PostgreSQL sobre como iniciar um servidor me aponta para o diretório init.d padrão. Meu diretório init.d contém o script postgresql. Parece que esse script pode ser configurado para iniciar apenas uma versão, mas a alteração necessária não é óbvia para mim.

http://www.postgresql.org/docs/9.1/interactive/server-start.html

A postagem abaixo foi muito informativa, mas mostra como remover um cluster, não como desativar um na inicialização. Gostaria de deixar meu cluster mais antigo instalado, pois talvez eu queira recuperar mais informações dele.

Eu acho que tenho vários servidores postgresql instalados, como identifico e excluo os 'extras'?

Eu considerei escrever um script para matar o servidor assim que o sistema terminar de carregar, mas isso parece ineficiente. Existe uma maneira mais limpa de desativar a versão 9.1 na inicialização?

BitPusher16
fonte

Respostas:

43

Para menos invasões, edite /etc/postgresql/9.1/main/start.confe substitua autopormanual ou disabled.

ch2500
fonte
Obrigado ch2500! Esta solução é intuitiva e faz exatamente o que eu preciso.
BitPusher16
Estou procurando uma resposta como essa há várias horas. OBRIGADO imensamente.
Jonathan Vanasco
10

O Debian criou vários scripts (como os utilitários de cluster pg_ *) para simplificar a execução de várias versões ou instalações do PostgreSQL em um único servidor, e é por isso que isso não está documentado no postgresql.org.

Não tenho certeza se o .debpacote do PostgreSQL usa o mesmo mecanismo de inicialização do Debian, mas olhando o pacote que tenho, se você criar /etc/init.d/postgresql-9.1(mesmo que seja um arquivo vazio), /etc/init.d/postgresqlassumirá que você deseja controlar essa versão separadamente e não inicie-o por padrão. Você ainda pode iniciá-lo com

service postgresql start 9.1

para substituir a pesquisa de versão.

DerfK
fonte
Obrigado DerfK, isso funcionou. Criei o arquivo que você sugeriu, coloquei um hash bang e o tornei executável. Quando eu reiniciado, pg_lsclusters deu: Ver Cluster Port Status Owner Data directory Log file 9.1 main 5433 down postgres /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log 9.3 main 5432 online postgres /var/lib/postgresql/9.3/main /var/log/postgresql/postgresql-9.3-main.log
BitPusher16
Os pacotes da equipe de empacotamento do PostgreSQL Debian são idênticos aos do Debian. Você deve usar a infraestrutura de cluster pg_ * em vez de invadir seus próprios scripts sysv init start.
Michael Renner