web-dev-qa-db-fra.com

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

J'utilise Ubuntu 12.04 sur Oracle VirtualBox. Il y a quelques mois, j'ai installé la version 9.1 du serveur PostgreSQL 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 à /etc/postgresql/$VERSION/main/postgresql.conf et échangé leurs numéros de port pour 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?

25
BitPusher16

Pour moins de piratage, modifiez /etc/postgresql/9.1/main/start.conf et remplacez auto par manual ou disabled.

46
ch2500

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 package .deb 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 s'il s'agit d'un fichier vide), alors /etc/init.d/postgresql Supposera que vous voulez contrôler cette version séparément et ne la démarrera pas par défaut. Vous pouvez toujours le démarrer avec

service postgresql start 9.1

pour remplacer la recherche de version.

10
DerfK