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 :

  1. On coupe les clients :

      sudo systemctl stop request-tracker4.service bley.service
    
  2. On supprime les bases de données installées à l'initialisation du paquet contenant la nouvelle version :

      sudo pg_dropcluster --stop 9.4 main
    
  3. On effectue la migration du cluster de la version précédente à la nouvelle :

      sudo pg_upgradecluster -v 9.4 9.1 main
    
  4. On nettoie la configuration qui a été copiée telle quelle. Utiliser git checkout -p est bien pratique pour cela.

  5. On vérifie que les services continuent à marcher (Bley et Request Tracker :

      sudo systemctl start request-tracker4.service bley.service
    
  6. 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
    
  7. 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