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 depg_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.