Solución:
Puede haber cierta confusión sobre lo que la gente entiende por instalación.
- los
/etc/postgresql/
carpeta es la carpeta de configuración para sus clústeres. - los
/var/lib/postgresql/
carpeta es para datos. - Los binarios del programa para cada versión se encuentran en carpetas separadas, generalmente en
/usr/lib/postgresql/
.
Realmente no se sobre /opt/postgresql
ya que no tengo eso en el mío. Pero /opt
es para binarios “opcionales”, por lo que es posible que su instalación esté aquí en lugar de/usr/lib/postgresql/
.
En resumen, creo que es posible que solo tenga una instalación que tenga archivos en varias ubicaciones.
Si desea ver lo que ha instalado, esto puede ayudar:
Cómo está estructurado postgresql:
Para aclarar un poco las cosas, postgres está estructurado de la siguiente manera:
-
Una versión se refiere literalmente a qué versión de los binarios del programa postgresql. Cada versión instalada puede tener un clúster instalado bajo esa versión. Si no es así, esa versión está efectivamente inactiva, ya que no tiene datos ni servidor en ejecución asociado.
-
Debajo de cada versión hay muchos grupos. Puede pensar en el clúster como un servidor de prostgres en ejecución (proceso). Cada clúster debe tener su propio archivo de puerto / socket para que los clientes se conecten. Cada clúster será administrado por una única versión.
-
Dentro de cada grupo habrá una serie de bases de datos. Cuando un cliente se conecta, selecciona una base de datos para conectarse. Puede solicitar cambiar a qué base de datos está conectado sin abrir una nueva sesión, pero solo puede conectarse a una.
¿Qué tienes instalado?
Para saber qué versiones están instaladas, puede consultar dpkg
y apt
. Debería poder desinstalar versiones usando apt
y dpkg
, pero tenga mucho cuidado de no hacer esto antes de comprobar qué clústeres hay en cada versión.
Para averiguar qué clústeres tiene, use el comando pg_lsclusters
. Cuando llamo a esto, obtengo lo siguiente, obtendrá 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 especial atención a la columna “Estado”. Si un clúster no está en línea, entonces son solo datos en el disco y no hace nada. Si está en línea, entonces se está ejecutando.
¿Cómo se fusionan los clústeres?
Puede copiar el contenido de un clúster a otro utilizando el pg_dumpall
comando para generar una copia de seguridad y usar psql
para importarlo al clúster que desea conservar. Vale la pena mantener copias de seguridad de todo antes de comenzar.
¿Cómo se elimina un clúster que ya no se utiliza?
-
Usar
pg_lsclusters
para obtener detalles sobre los clústeres y anotar el directorio de datos y el archivo de registro de esos clústeres. -
Usar
pg_ctlcluster <version> <cluster>
para detener el clúster.
stop -
Elimine la carpeta de datos y, opcionalmente, el archivo de registro.
-
Finalmente elimine los datos y config. La carpeta de datos debe ser
/var/lib/postgres/data/<version>/<cluster>
pero compruebe la salida depg_lsclusters
para estar seguro de esto. La configuración para el clúster: todos los clústeres tendrán su propia carpeta de configuración en
/etc/postgresql/<version>/<cluser>/
.
¿Por qué obtuviste múltiples clústeres si nunca los pediste?
Por lo general, debe solicitar específicamente que se cree un clúster para obtener uno nuevo. La única excepción a esto es cuando actualiza un clúster, efectivamente creará uno nuevo y dejará el anterior en su lugar.