Migration d’une version majeure de PostgreSQL à une autre

EDIT : J'ai refait cet article pour la migration de PostgreSQL 9.4 à 9.6 (Debian Stretch) ici

Nota bene Cet article est maintenant disponible sur mon wiki à l’adresse https://wiki.fiat-tux.fr/admin:bdd:pgsql:migration-version-majeure. Le wiki contient une astuce en plus et sera mis à jour. Je vous conseille donc plutôt de le consulter plutôt que cette page.

Avec la sortie de Jessie, c'est PostgreSQL 9.4 qui est proposé. Mais comment faire pour migrer les bases de données du cluster 9.1 (qui ne recevra plus trop d'updates) vers le 9.4 ? Ce n'est pas très compliqué.

On stoppe les clusters PostgreSQL

service postgresql stop

On vire le cluster de la nouvelle version (normalement vide si on vient juste de l'installer : faire gaffe à ne pas laisser passer de temps entre l'installation de la nouvelle version et la migration des données, pour que personne n'utilise le nouveau cluster)

pg_dropcluster --stop 9.4 main

On migre les données

pg_upgradecluster -m upgrade 9.1 main

On restoppe l'ancien cluster (il a démarré tout seul pour la migration)

service postgresql stop 9.1

On teste les applis qui utilisent PostgreSQL Si ça fonctionne, on vire les anciennes données

pg_dropcluster 9.1 main

On vire l'ancienne version de PostgreSQL

apt-get autoremove --purge postgresql-9.1

C'est plutôt simple, n'est-ce pas ?

Source

2 réflexions au sujet de “Migration d’une version majeure de PostgreSQL à une autre”

  1. Bonjour, j’ai lu avec attention article et j’ai fait des essais sans succès car j’ai ce problème (qui reviens) qui est similaire quand je met à jour ma version débian avec « apt-get install && apt-get upgrade » sur une VM. Pourriez vous m’aider svp et m’indiquer la méthode à suivre en réponse comme vous le montrez (cela peux servir aussi à d’autres), je suis débutant.
    J’ai le message d’erreur suivant :
    Version majeure 11 obsolète
    La version 11 de PostgreSQL est obsolète, mais le paquet du client ou du serveur est toujours installé. Veuillez installer la version la plus récente des paquets postgresql-12 et postgresql-client-12 et mettre à niveau les grappes (« clusters ») en version avec « pg_upgradecluster ». Veuillez consulter la page de manuel pour plus de précisions. Veuillez noter que l’installation de postgresql-12 créera par défaut une grappe (« cluster ») 12/main. Si vous souhaitez mettre à niveau la grappe 11/main, il faudra supprimer la grappe 12 en exécutant la commande « pg_dropcluster–stop 12 main ». Veuillez consulter la page de manuel pour plus de précisions.

    • Simple : vous avez, je ne sais pourquoi mais je soupçonne l’ajout des dépôts de PostgreSQL sur votre système, PostgreSQL 12 sur votre système. Pour utiliser cette nouvelle version, il suffit de suivre le tuto sur mon wiki et changeant les numéros de versions du tuto, puisque vous visez la version 12 et non la 11. Faites attention de la version de laquelle vous partez : est-ce la 11 ? Est-ce une version antérieure ? Un moyen simple de le savoir est de faire grep -R 5432 /etc/postgresql : la version qui écoute sur le port 5432 est normalement la version utilisée (et donc contenant les données).

      NB : je vous recommande de faire une sauvegarde de vos données avant de vous lancer dans la migration.

Les commentaires sont fermés.