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

3

Parece que tenho algumas instalações do postgresql na minha máquina de alguma forma. Eu não tenho certeza se isso é um erro ou se o Ubuntu, por alguma razão estranha, duplica os direcotórios e os mantém em outro lugar. Eu tenho um diretório postgresql em / etc

um em / usr / lib

e um em / opt

Estou bem confuso neste momento. Como faço para apagar os extras? Quais são ele um extra? Eu também preciso ter certeza de que o meu 'pg' gem no meu env rails está apontando para o servidor db posgresql correto.
Qualquer pensamento sobre o meu problema seria enorme.

    
por Guided33 30.05.2012 / 09:32

2 respostas

15

Pode haver alguma confusão sobre o que as pessoas querem dizer com uma instilação. A pasta /etc/postgresql/ é a pasta de configuração dos seus clusters. A pasta /var/lib/postgresql/ é para dados. Os binários do programa para cada versão estão em pastas separadas geralmente em /usr/lib/postgresql/ . Eu realmente não sei sobre /opt/postgresql , porque eu não tenho isso no meu. Mas /opt é para binários "opcionais", então é possível que sua instalação esteja aqui em vez de /usr/lib/postgresql/ .

Em suma, acho que você pode ter apenas uma instalação que possui arquivos em vários locais.

Se você quiser ver o que você instalou, isso pode ajudar:

Como o postgresql está estruturado:

Para tornar as coisas um pouco mais claras, o postgres é estruturado da seguinte forma:

  • Uma versão refere-se literalmente a qual versão do postgresql binários do programa. Cada versão instalada pode ter um cluster instalado sob essa versão. Se não, então essa versão é efetivamente dormente, pois não possui dados ou servidor em execução associado.

  • Em cada versão, há muitos clusters. Você pode pensar do cluster como um servidor de procgres em execução (processo). Cada cluster precisa ter seu próprio arquivo de porta / soquete para os clientes se conectarem. Cada cluster será gerenciado por uma única versão.

  • Dentro de cada cluster haverá vários bancos de dados. Quando um cliente conecta ele seleciona um DB para se conectar. Pode pedir para mudar qual DB está conectado sem abrir uma nova sessão, mas só pode sempre estar conectado a um.

O que você instalou?

Para descobrir quais versões estão instaladas, você pode olhar para dpkg e apt . Você deve ser capaz de desinstalar versões usando apt e dpkg , mas tenha muito cuidado para não fazer isso antes de verificar quais clusters estão em cada versão.

Para descobrir quais clusters você usa, use o comando pg_lsclusters . Quando eu chamo isso eu recebo o seguinte, você vai ter algo diferente:

Version Cluster   Port Status Owner    Data directory                     Log file
9.1     main      5432 online <unknown> /var/lib/postgres/data/9.1/main        /var/log/postgresql/postgresql-9.1-main.log

Preste muita atenção à coluna "Status". Se um cluster não estiver online, são apenas dados no disco e não estão fazendo nada. Se estiver on-line, está sendo executado.

Como você mescla clusters?

Você pode copiar o conteúdo de um cluster para outro usando o comando pg_dumpall para gerar um backup e usar psql para importá-lo para o cluster que deseja manter. Vale a pena manter backups de tudo antes de começar.

Como você remove um cluster que não é mais usado?

  • Use pg_lsclusters para obter os detalhes sobre os clusters e observe o diretório de dados e arquivo de log para esses clusters.

  • Use pg_ctlcluster <version> <cluster> stop para parar o cluster.

  • Remova a pasta de dados e, opcionalmente, o arquivo de log.

  • Por fim, remova os dados e a configuração. A pasta de dados deve ser /var/lib/postgres/data/<version>/<cluster> , mas verifique a saída de pg_lsclusters para ter certeza disso. A configuração para o cluster: todos os clusters terão sua própria pasta de configuração em /etc/postgresql/<version>/<cluser>/ .

Por que você conseguiu vários clusters se você nunca pediu por eles?

Normalmente, você precisa solicitar especificamente que um cluster seja criado para obter um novo. A única exceção a isso é quando você atualiza um cluster, ele criará efetivamente um novo e deixará o antigo no lugar.

    
por 30.05.2012 / 15:38
0

Você pode usar o dpkg -S para ver a qual pacote um determinado diretório pertence. Isso permitiria que você veja se os diretórios pertenciam a pacotes diferentes.

    
por 04.06.2014 / 02:14