web-dev-qa-db-fra.com

Mettez à niveau PostgreSQL de 9.6 à 10.0 sur Ubuntu 16.10

Ma base de données dépasse 600 Go et mon volume actuel ne représente que 1 To, ce qui limite probablement mes options.

Mes fichiers de configuration 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écharger libicu55 manuellement et de l'installer, et je devais accorder l'autorisation 1777 à postgres pour mon dossier/tmp /. J'étais également en train d'enregistrer le dossier de données sur un autre lecteur. J'ai donc dû utiliser la commande suivante:

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

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

50
trench

Un guide étape par étape

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

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

    Puis lancez 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 (car il est créé par défaut lors de l'installation du package). Ceci est fait de sorte qu'une nouvelle installation fonctionne immédiatement sans qu'il soit nécessaire de créer un cluster en premier, mais elle se heurte bien sûr lorsque vous essayez de mettre à niveau 9.6/main lorsque 10/main existe également. La procédure recommandée consiste à supprimer le cluster 10 avec pg_dropcluster puis à mettre à niveau avec pg_upgradecluster.

  4. Arrêtez le cluster 10 et déposez-le:

    Sudo pg_dropcluster 10 main --stop
    
  5. Arrêtez tous les processus et services en é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. Relancez PostgreSQL

    Sudo systemctl start postgresql
    
  8. Exécutez pg_lsclusters. Votre cluster 9.6 devrait maintenant être "hors service" et le cluster 10 devrait être en ligne à l'adresse 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. Ensuite, 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 depuis une version plus ancienne, envisagez d’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 une option --link afin que la mise à niveau soit en place. Toutefois, cela est dangereux: vous pouvez perdre le cluster en cas d’échec. N'utilisez pas cette option si ce n'est pas nécessaire, car -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 et de 10 à 11.

191
Max Malysh

Presque travaillé hors de la boîte. Je suis sur 17.10 astucieux. Tant que vous pouvez mettez 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.

0
datakid