Page:
Upgrade des versions majeures de PostgreSQL
3
Upgrade des versions majeures de PostgreSQL
Darks edited this page 2021-02-17 22:32:35 +01:00
Table of Contents
Deux méthodes : manuelle (pg_dumpall
), ou automatique (pg_upgrade
).
- Méthode manuelle : Upgrading a PostgreSQL Cluster (ici version 13 de la doc)
- Méthode automatique : Documentation de
pg_upgrade
(idem)
Le cluster est dans /var/lib/postgres/data
.
Méthode manuelle
Commencer par arrêter les serveurs et dump toute la base.
TODO : @Breizh préfère faire pointer le docroot de la v5 vers un dossier de maintenance qu'arrêter le vhost.
# Arrêter la v5
% sudo rm /etc/nginx/sites-enabled/pc-dev.conf
% sudo systemctl reload nginx
# Dump toute la base
% cd /var/lib
% sudo -u postgres pg_dumpall | sudo tee postgres12to13-dump > /dev/null
# Arrêter le serveur PostgreSQL
% sudo systemctl stop postgresql
# Déplacer le répertoire de données (toujours depuis /var/lib)
% sudo mv postgres postgres.12
Mettre à jour les paquets pour installer la nouvelle version de PostgreSQL.
% yay -Syu # Vérifer que extra/postgresql et extra/postgresql-libs sont mis à jour
Recréer le cluster à l'ancienne adresse et migrer la configuration. Avec un peu de chance les valeurs par défaut n'auront pas changé.
# Toujours depuis /var/lib
% sudo -u postgres initdb -D postgres/data
# Vérifier les changements sur la conf ; si besoin, fusionner
% sudo diff postgres.12/data/pg_hba.conf postgres/data/pg_hba.conf
% sudo diff postgres.12/data/postgresql.conf postgres/data/postgresql.conf
Démarrer le nouveau cluster et réimporter toutes les données.
# Créer le dossier pour le verrou s'il n'existe pas
% sudo mkdir /run/postgresql && sudo chown postgres:postgres /run/postgresql
# Démarrer le cluster
% sudo systemctl start postgresql
# Réimporter les données
% sudo -u postgres psql -d postgres -f postgres12to13-dump
Redémarrer la v5.
% sudo ln -s /etc/nginx/sites-{available,enabled}/pc-dev.conf
% sudo systemctl reload nginx
Si après trois jours ça marche toujours, supprimer l'ancienne version.
% sudo rm -rf postgres.12
% sudo rm -f postgres12to13-dump
Méthode automatique
Sur Arch uniquement. Voir la doc pour d'autres distros. Pour passer de X à Y
% sudo pacman -Syu postgresql-old-upgrade # installation des outils qui vont bien
% sudo mv /var/lib/postgres/data /var/lib/postgres/data.old # copie de l'ancienne BDD
% sudo mkdir /var/lib/postgres/data /var/lib/postgres/tmp # création des nouveaux répertoires
% sudo chown postgres:postgres /var/lib/postgres/data /var/lib/postgres/tmp
[postgres]$ cd /var/lib/postgres/tmp
[postgres]$ initdb -D /var/lib/postgres/data # initialisation de la nouvelle BDD en version Y
[postgres]$ pg_upgrade -b /opt/pgsql-X/bin -B /usr/bin -d /var/lib/postgres/olddata -D /var/lib/postgres/data # passage du format de X à Y