PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Mettre à niveau PostgreSQL de 9.6 à 10.0 sur Ubuntu 16.10

Un guide étape par étape

  1. Faire une sauvegarde . Assurez-vous que votre base de données n'est pas mise à jour.

     pg_dumpall > outputfile
    
  2. Installer Postgres 10 . Suivez les instructions sur cette page :https://www.postgresql.org/download/linux/ubuntu/

    Ensuite, exécutez sudo apt-get install postgresql-10 . Une version plus récente sera installée côte à côte avec la version précédente.

  3. Exécutez pg_lsclusters :

     Ver Cluster Port Status Owner    Data directory               Log file
     9.6 main    5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
     10  main    5433 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    

    Il existe déjà un cluster main pour 10 (puisqu'il est créé par défaut lors de l'installation du package). Ceci est fait pour qu'une nouvelle installation fonctionne immédiatement sans qu'il soit nécessaire de créer un cluster au préalable, mais bien sûr, cela se heurte lorsque vous essayez de mettre à niveau 9.6/main quand 10/main existe aussi. La procédure recommandée est de supprimer le cluster 10 avec pg_dropcluster puis mettre à jour avec pg_upgradecluster .

  4. Arrêtez le cluster 10 et supprimez-le :

     sudo pg_dropcluster 10 main --stop
    
  5. Arrêtez tous les processus et services écrivant dans la base de données. Arrêtez la base de données :

     sudo systemctl stop postgresql 
    
  6. Mettez à niveau le cluster 9.6 :

     sudo pg_upgradecluster -m upgrade 9.6 main
    
  7. Redémarrez PostgreSQL

     sudo systemctl start postgresql
    
  8. Exécutez pg_lsclusters . Votre cluster 9.6 devrait maintenant être "down", et le cluster 10 devrait être en ligne à 5432 :

     Ver Cluster Port Status Owner    Data directory               Log file
     9.6 main    5433 down   postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log
     10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
    
  9. Tout d'abord, vérifiez que tout fonctionne correctement. Après cela, supprimez le cluster 9.6 :

      sudo pg_dropcluster 9.6 main --stop
    

Quelques notes sur pg_upgradecluster

Ce guide fonctionne bien pour la mise à niveau de 9.5 à 10.1. Lors de la mise à niveau à partir d'une ancienne version, pensez à omettre -m upgrade à l'étape 6 :

sudo pg_upgradecluster 9.6 main

Si vous avez un très gros cluster, vous pouvez utiliser pg_upgradecluster avec un --link option, de sorte que la mise à niveau sera en place. Cependant, cela est dangereux :vous pouvez perdre le cluster en cas de panne. N'utilisez simplement pas cette option si elle n'est pas nécessaire, car -m upgrade est déjà assez rapide.

Basé sur :

  • Docs :Mise à niveau d'un cluster PostgreSQL
  • Gist #1 :delameko/upgrade-postgres-9.5-to-9.6.md
  • Gist #2 :johanndt/upgrade-postgres-9.3-to-9.5.md
  • Que se passe-t-il si j'interromps ou annule pg_upgradecluster ? ?
  • Page de manuel Ubuntu pour pg_upgradecluster

Mettre à jour

Ce guide fonctionne bien pour la mise à niveau de 9.6 à 11 et de 10 à 11, ainsi que de 10 à 13.