J'ai plusieurs serveurs PostgreSQL installés. Comment désactiver le démarrage automatique pour un serveur plus ancien?

24

J'utilise Ubuntu 12.04 sur Oracle VirtualBox. Il y a quelques mois, j'ai installé le serveur PostgreSQL version 9.1 sur ma machine. Tout récemment, j'ai appris que le serveur PostgreSQL 9.3 prend en charge les types de données JSON, j'ai donc décidé de mettre à niveau.

J'ai mis à niveau vers 9.3 en suivant les instructions ici:

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

Ce serveur a installé la version 9.3 sur ma machine aux côtés de la version 9.1. L'exécution de pg_lsclusters après un nouveau démarrage donne:

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

J'ai ensuite effectué la maintenance post-mise à niveau suivante: j'ai exporté plusieurs tables de mon serveur 9.1 avec pg_dump et les ai restaurées sur mon serveur 9.3. J'ai ensuite ouvert mes fichiers de configuration pour 9.1 et 9.3 sur /etc/postgresql/$VERSION/main/postgresql.confet échangé leurs numéros de port afin que mon client psql se connecte au nouveau serveur par défaut.

Ma question est la suivante. Les versions 9.1 et 9.3 démarrent au démarrage. Je voudrais empêcher le démarrage automatique de 9.1, car il occupe environ 5% de la mémoire de mon système. Comment puis-je faire ceci?

Ressources consultées:

La page doc de PostgreSQL sur le démarrage d'un serveur me pointe vers le répertoire init.d standard. Mon répertoire init.d contient le script postgresql. Il semble que ce script puisse être configuré pour lancer une seule version, mais le changement requis n'est pas évident pour moi.

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

Le message ci-dessous était très informatif, mais il montre comment supprimer un cluster, pas comment en désactiver un au démarrage. Je voudrais laisser mon ancien cluster installé, car je souhaiterais peut-être en récupérer d'autres informations.

Je pense que j'ai plusieurs serveurs postgresql installés, comment puis-je identifier et supprimer ceux «supplémentaires»?

J'ai envisagé d'écrire un script pour tuer le serveur une fois le chargement du système terminé, mais cela semble inefficace. Existe-t-il un moyen plus propre de désactiver la version 9.1 au démarrage?

BitPusher16
la source

Réponses:

43

Pour moins de piratage, modifiez /etc/postgresql/9.1/main/start.confet remplacez autopar manualou disabled.

ch2500
la source
Merci ch2500! Cette solution est intuitive et fait exactement ce dont j'ai besoin.
BitPusher16
Je cherche une réponse comme celle-ci depuis plusieurs heures. MERCI énormément.
Jonathan Vanasco du
10

Debian a créé plusieurs scripts (comme les utilitaires de cluster pg_ *) pour simplifier l'exécution de plusieurs versions ou installations de PostgreSQL sur un seul serveur, c'est pourquoi cela n'est pas documenté sur postgresql.org.

Je ne sais pas si le propre .debpackage de PostgreSQL utilise le même mécanisme de démarrage que Debian, mais en regardant le package que j'ai, si vous créez /etc/init.d/postgresql-9.1(même si c'est un fichier vide) /etc/init.d/postgresql, vous supposerez que vous voulez contrôler cette version séparément et ne le ferez pas démarrez-le par défaut. Vous pouvez toujours le démarrer avec

service postgresql start 9.1

pour remplacer la recherche de version.

DerfK
la source
Merci DerfK, cela a fonctionné. J'ai créé le fichier que vous avez suggéré, y ai ajouté un hachage et l'ai rendu exécutable. Lorsque j'ai redémarré, pg_lsclusters a donné: 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
Les paquets de l'équipe de mise en paquet Debian de PostgreSQL sont identiques à ceux de Debian. Vous devez utiliser l'infrastructure de cluster pg_ * au lieu de pirater vos propres scripts de démarrage d'initialisation sysv.
Michael Renner