77 votes

Mettez à niveau PostgreSQL de 9.6 à 10.0 sur Ubuntu 16.10

Ma base de données est de plus de 600 GO et mon volume actuel est seulement de 1 to, de sorte que probablement la limite de mes possibilités.

Mes fichiers de config sont ici:

/etc/postgresql/9.6/main

Ma base de données est ici:

/mnt/1TB/postgresql/9.6/main

Edit - Ce guide a fonctionné pour moi. Le seul ajout que je devais faire était de téléchargement libicu55 manuellement pour l'installer, et j'ai dû accorder postgres 1777 autorisation pour mon /tmp/ dossier. J'étais également d'enregistrer le dossier de données sur un autre disque, j'ai donc dû utiliser la commande:

pg_upgradecluster -m upgrade 10 main /mnt/1TB/postgresql/10

https://gist.github.com/delameko/bd3aa2a54a15c50c723f0eef8f583a44

270voto

Shemhamforasch Points 153

Une É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 seront installés côte-à-côte avec la version antérieure.

  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 y a déjà un cluster main pour les 10 (puisque celui-ci est créé par défaut à l'installation du paquet). Ceci est fait de sorte qu'une nouvelle installation fonctionne hors de la boîte, sans la nécessité de créer un pôle d'abord, mais bien sûr, il affrontements lorsque vous essayez de mettre à niveau 9.6/main lorsque 10/main existe aussi. La procédure recommandée est de supprimer le 10 cluster avec pg_dropcluster puis de mettre à jour avec pg_upgradecluster.

  4. Arrêt du 10 cluster et le déposer:

    sudo pg_dropcluster 10 main --stop
    
  5. Arrêtez tous les processus et services de l'écriture à la base de données. Arrêter la base de données:

    sudo systemctl stop postgresql 
    
  6. Mise à niveau de l'9.6 cluster:

    sudo pg_upgradecluster -m upgrade 9.6 main
    
  7. Démarrer PostgreSQL nouveau

    sudo systemctl start postgresql
    
  8. Exécutez pg_lsclusters. Votre 9.6 cluster devrait maintenant être "en bas", et le 10 cluster devrait être en ligne à l' 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 bien. Après cela, retirez la 9.6 cluster:

     sudo pg_dropcluster 9.6 main --stop
    

Quelques notes sur pg_upgradecluster

Ce guide fonctionne très bien pour la mise à niveau à partir de 9.5 10.1. Lors de la mise à niveau depuis une version plus ancienne, envisagez d'omettre -m upgrade sur l'étape n ° 6:

sudo pg_upgradecluster 9.6 main

Si vous avez vraiment un gros cluster, vous pouvez utiliser pg_upgradecluster avec un --link option, de sorte que la mise à jour sera en place. Cependant, c'est dangereux, vous pouvez perdre du cluster en cas de panne. Il suffit de ne pas utiliser cette option si pas nécessaire, comme -m upgrade est déjà assez rapide.

Basé sur:

Mise à jour

Ce guide fonctionne très bien pour la mise à niveau de 9,6 à 11 ans et de 10 à 11.

0voto

datakid Points 358

Presque travaillé hors de la boîte. Je suis sur 17.10 astucieux. Bien que vous puissiez mettre cela dans le fichier .deb, cela ne marchera pas - Postgres ne met à jour que les versions non LTS si elles cassent la version LTS. Alors mettez Zesty dans ce débat et vous êtes prêt à partir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X