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.
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?
Pour moins de piratage, modifiez /etc/postgresql/9.1/main/start.conf
et remplacez auto
par manual
ou disabled
.
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.