Tengo múltiples servidores PostgreSQL instalados. ¿Cómo deshabilito el arranque automático para el servidor anterior?

24

Estoy ejecutando Ubuntu 12.04 en Oracle VirtualBox. Hace un par de meses, instalé el servidor PostgreSQL versión 9.1 en mi máquina. Hace poco, supe que el servidor PostgreSQL 9.3 es compatible con los tipos de datos JSON, así que decidí actualizar.

Actualicé a 9.3 siguiendo las instrucciones aquí:

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 instaló la versión 9.3 en mi máquina junto con la versión 9.1. Ejecutar pg_lsclusters después de un nuevo arranque da:

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

Luego realicé el siguiente mantenimiento posterior a la actualización: exporté varias tablas de mi servidor 9.1 con pg_dump y las restauré a mi servidor 9.3. Luego abrí mis archivos de configuración para 9.1 y 9.3 en /etc/postgresql/$VERSION/main/postgresql.confe intercambié sus números de puerto para que mi cliente psql se conecte al nuevo servidor de forma predeterminada.

Mi pregunta es esta Tanto 9.1 como 9.3 comienzan en el arranque. Me gustaría evitar que 9.1 se inicie automáticamente, ya que ocupa aproximadamente el 5% de la memoria de mi sistema. ¿Cómo puedo hacer esto?

Recursos consultados:

La página de documentos de PostgreSQL al iniciar un servidor me señala al directorio init.d estándar. Mi directorio init.d contiene el script postgresql. Parece que este script se puede configurar para lanzar solo una versión, pero el cambio requerido no es obvio para mí.

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

La publicación a continuación fue muy informativa, pero muestra cómo eliminar un clúster, no cómo deshabilitar uno en el inicio. Me gustaría dejar mi clúster más antiguo instalado, ya que es posible que desee recuperar más información de él.

Creo que tengo varios servidores postgresql instalados, ¿cómo identifico y elimino los 'extra'?

He considerado escribir un script para matar el servidor una vez que el sistema ha terminado de cargarse, pero esto parece ineficiente. ¿Hay una forma más limpia de deshabilitar la versión 9.1 en el arranque?

BitPusher16
fuente

Respuestas:

43

Por menos de un truco, edite /etc/postgresql/9.1/main/start.confy reemplace autocon manualo disabled.

ch2500
fuente
Gracias ch2500! Esta solución es intuitiva y hace exactamente lo que necesito.
BitPusher16
He estado buscando una respuesta como esta durante varias horas. GRACIAS inmensamente
Jonathan Vanasco
10

Debian creó varios scripts (como las utilidades de clúster pg_ *) para simplificar la ejecución de múltiples versiones o instalaciones de PostgreSQL en un solo servidor, por lo que esto no está documentado en postgresql.org.

No estoy seguro de si el propio .debpaquete de PostgreSQL usa el mismo mecanismo de inicio que Debian, pero si mira el paquete que tengo, si crea /etc/init.d/postgresql-9.1(incluso si es un archivo vacío) /etc/init.d/postgresqlsupondrá que desea controlar esa versión por separado y no lo hará. iniciarlo por defecto. Todavía puedes comenzar con

service postgresql start 9.1

para anular la búsqueda de versión.

DerfK
fuente
Gracias DerfK, esto funcionó. Creé el archivo que sugirió, le puse un hash bang y lo hice ejecutable. Cuando reinicié, pg_lsclusters dio: 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
Los paquetes del equipo de empaquetado PostgreSQL Debian son idénticos a los de Debian. Debe usar la infraestructura de clúster pg_ * en lugar de hackear sus propios scripts de inicio de sysv init.
Michael Renner