Sous Debian, les versions majeures de PostgreSQL sont co-installables.
Chaque version dispose de son propre dossier de configuration
(/etc/postgresql/VERSION
) et son propre dossier de données
(/srv/pestgresql/VERSION
sur bulbe).
Chacune écoute sur un port réseau différent (5432, 5433, 5434). Les
logiciels peuvent donc utiliser les différentes versions en parallèle.
La migration d'une version majeure à une autre doit donc être faite manuellement. La procédure de migration veille à réassigner les ports afin qu'il ne soit pas nécessaire de reconfigurer les logiciels.
Cette opération n'avait pas été faite au moment de la mise à jour
version jessie
. Le méta-paquet postgresql
avait installé la nouvelle
version, mais la migration des données et des logiciels n'avait pas été
faite. Afin de basculer vers la version 9.6 livrée avec Stretch, il y a
donc deux migrations majeures à faire.
La procédure est sensiblement la même pour jessie et pour stretch.
Cela donne donc :
On coupe les clients :
sudo systemctl stop request-tracker4.service bley.service
On supprime les bases de données installées à l'initialisation du paquet contenant la nouvelle version :
sudo pg_dropcluster --stop 9.4 main
On effectue la migration du cluster de la version précédente à la nouvelle :
sudo pg_upgradecluster -v 9.4 9.1 main
On nettoie la configuration qui a été copiée telle quelle. Utiliser
git checkout -p
est bien pratique pour cela.On vérifie que les services continuent à marcher (Bley et Request Tracker :
sudo systemctl start request-tracker4.service bley.service
Rebelote pour passer de la version 9.4 à 9.6 :
sudo systemctl stop request-tracker4.service bley.service sudo pg_dropcluster --stop 9.6 main sudo pg_upgradecluster -v 9.6 9.4 main sudo git checkout -p # et autres réglages sudo systemctl start request-tracker4.service bley.service
Une fois vérifié que cela fonctione, on peut virer les anciennes versions :
sudo pg_dropcluster 9.1 main sudo pg_dropcluster 9.4 main sudo apt purge postgresql-9.1 postgresql-9.4