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

Comment mettre à niveau la base de données postgresql de 10 à 12 sans perdre de données pour openproject

A) Créez d'abord une sauvegarde de toutes les bases de données pour cela (vous pouvez continuer à partir de B si vous n'avez pas besoin d'une sauvegarde)

  1. Connectez-vous en tant qu'utilisateur postgres
     sudo su postgres
  1. Créez un fichier .sql de sauvegarde pour toutes les données que vous avez dans toutes les bases de données
    pg_dumpall > backup.sql

B) Mise à niveau vers PostgreSQL12

  1. mettre à jour les packages et installer postgres 12
     sudo apt-get update
     sudo apt-get install postgresql-12 postgresql-server-dev-12
  1. Arrêter le service postgresql
     sudo systemctl stop postgresql.service
  1. migrer les données
     /usr/lib/postgresql/12/bin/pg_upgrade \
     --old-datadir=/var/lib/postgresql/10/main \
     --new-datadir=/var/lib/postgresql/12/main \
     --old-bindir=/usr/lib/postgresql/10/bin \
     --new-bindir=/usr/lib/postgresql/12/bin \
     --old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
     --new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
  1. Passer à l'utilisateur normal
     exit
  1. Échangez les ports entre l'ancienne et la nouvelle version de Postgres.
     sudo vim /etc/postgresql/12/main/postgresql.conf
     #change port to 5432
     sudo vim /etc/postgresql/10/main/postgresql.conf
     #change port to 5433
  1. Démarrer le service postgresql
     sudo systemctl start postgresql.service
  1. Connectez-vous en tant qu'utilisateur postgres
     sudo su postgres
  1. Vérifiez votre nouvelle version de postgres
     psql -c "SELECT version();"
  1. Exécuter le nouveau script de cluster généré
     ./analyze_new_cluster.sh
  1. Revenir en tant qu'utilisateur normal (utilisateur par défaut) et nettoyer le désordre de l'ancienne version
     sudo apt-get remove postgresql-10 postgresql-server-dev-10
     #uninstalls postgres packages
     sudo rm -rf /etc/postgresql/10/
     #removes the old postgresql directory
     sudo su postgres
     #login as postgres user
     ./delete_old_cluster.sh
     #delete the old cluster data
  1. Félicitations ! Votre version de postgresql est maintenant mise à niveau, si tout fonctionne bien en B, nous n'avons pas à appliquer la sauvegarde car nous avons déjà migré les données de l'ancienne version vers la nouvelle version, la sauvegarde est juste au cas où quelque chose ne va pas.

REMARQUE : Modifiez postgresql.conf et pg_hba.conf selon vos besoins

PS :N'hésitez pas à commenter vos problèmes, suggestions ou toute autre modification que vous souhaiteriez suggérer