diff --git a/HowtoPostgreSQL.md b/HowtoPostgreSQL.md index 6a04917c..398a5723 100644 --- a/HowtoPostgreSQL.md +++ b/HowtoPostgreSQL.md @@ -362,6 +362,49 @@ postgres=# select * from pg_pltemplate; (6 rows) ~~~ +## Mettre à jour un cluster + +La mise à jour de PostgreSQL d'une version majeure à une autre implique une mise à jour du datadir. + +Dans Debian, chaque version de PostgreSQL a son propre paquet (*postgresql-9.3*, *postgresql-9.4*, etc…). La mise à jour doit donc forcement se faire de manière explicite par un `apt install` du paquet en question. Il n'est pas obligatoire de faire chaque mise à jour intermédiaire pour arriver à celle voulue (i.e. on peut passer de la 9.1 à la 9.6 sans devoir passer par la 9.2, 9.3, etc…). + +### Procédure à suivre pour passer à une version plus récente + +Dans la procédure suivante, on suppose que l'on met à jour un cluster en version 9.3 vers la version 9.6. Le cluster s'appelle *main* (nom par défaut). + +* Installer les paquets : + +~~~ +# apt install postgresql-9.6 postgresql-contrib-9.6 postgresql-client-9.6 +~~~ + +* supprimer le cluster créé par défaut à l'installation : + +~~~ +# pg_dropcluster 9.6 main --stop +~~~ + +* lancer la mise à jour du cluster. En gros `pg_upgrade` va interdire toute connexion (autre que postgres) sur le cluster à mettre à jour, faire un rsync du datadir (option `-m upgrade`) avec des hardlinks (pour sauver de la place et du temps) (option `-k`), intervertir le port de connexion des 2 clusters et réautoriser les connexions au cluster : + +~~~ +# pg_upgradecluster 9.3 main -m upgrade -k +~~~ + +* si tout c'est bien passé, on peut voir le nouveau cluster et s'y connecter : + +~~~ +# pg_lsclusters +# sudo -u postgres psql +psql (9.6.5) +~~~ + +* on peut alors supprimer l'ancien cluster ainsi que les paquets : + +~~~ +# pg_dropcluster 9.3 main +# apt remove postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3 +~~~ + ## Utilisation ### Connexion