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)
- Connectez-vous en tant qu'utilisateur postgres
sudo su postgres
- 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
- mettre à jour les packages et installer postgres 12
sudo apt-get update
sudo apt-get install postgresql-12 postgresql-server-dev-12
- Arrêter le service postgresql
sudo systemctl stop postgresql.service
- 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'
- Passer à l'utilisateur normal
exit
- É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
- Démarrer le service postgresql
sudo systemctl start postgresql.service
- Connectez-vous en tant qu'utilisateur postgres
sudo su postgres
- Vérifiez votre nouvelle version de postgres
psql -c "SELECT version();"
- Exécuter le nouveau script de cluster généré
./analyze_new_cluster.sh
- 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
- 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