Mise à jour mineure¶
Les versions mineures de PostgreSQL ne contiennent que des correctifs de bugs ou de failles de sécurité. Elles sont plus fréquentes que les versions majeures, avec un rythme de sortie de l’ordre des trois mois, sauf bugs majeurs ou failles de sécurité. Chaque bug est corrigé dans toutes les versions stables actuellement maintenues par le projet.
Il est donc possible d’appliquer ces mises à jour sans effectuer des tests de non-régression, et il n’est pas nécessaire
non plus de procéder à un export/import des données. Il n’y a pas de régression de comportement entre
versions mineures d’une même version majeure. Par ailleurs, les versions sont cumulatives. Il n’est pas
nécessaire de passer les versions les unes sur les autres, il est tout à fait possible, par exemple, de passer
directement d’une 16.2
à une 16.5
.
Pour être prévenu en cas de sortie d’une nouvelle version mineure, il est possible de :
- s’inscrire à la liste de diffusion pgsql-announce ;
- s’abonner au flux RSS.
Le site suivant, basé sur les release notes, permet de visualiser simplement la différence entre plusieurs versions de PostgreSQL : Why Upgrade
La plupart des distributions fournissent leur propres paquets pour Postgres. Néanmoins, nous recommandons d’utiliser les paquets maintenus par la communauté (PostGres Developpement Group). Le PGDG maintient des paquets des versions stables pour les distributions courantes : PostgreSQL - Download.
Les paquets sont disponibles dès l’officialisation de la sortie d’une version, mineure ou majeure. Il est à noter que seules les distributions encore supportées bénéficient de ces mises à jours.
Numérotation des versions¶
- Depuis la version 10 :
Le premier bloc correspond à la version majeure, le 2ème bloc correspond à la version mineure.
Avant la version 10 :
Les deux premiers digits correspondent à la version majeure, le 3ème digit correspond à la version mineure.
Prérequis¶
La communauté consacre beaucoup d’efforts à tester ces patchs afin de s’assurer qu’ils ne provoquent pas de modification du comportement normal du moteur de PostgreSQL.
Une mise à jour mineure ne nécessite donc pas de migration des données, mais requiert de suivre les étapes suivantes :
Lecture des Releases Notes¶
Avant d’appliquer toute mise à jour, il est indispensable de consulter les release notes de la version. Certaines mises à jour nécessitent d’effectuer des opérations de maintenance.
Attention
Si vous effectuez une mise à jour mineure cumulative de plusieurs versions mineures, il faut consulter les releases notes de chaque montée de version.
Mise en maintenance du mécanisme HA¶
Si votre cluster comprend des systèmes de bascule automatique, il faut bien penser à les mettre en mode maintenance afin d’éviter toute bascule inopinée lors de l’arrêt de l’instance primaire.
Il faut également prévoir de mettre en maintenance la supervision afin d’éviter toute levée d’alerte superflue.
Mise à jour des paquets¶
Une mise à jour mineure ne nécessite pas de migration de données. Il suffit d’arrêter l’instance, d’installer la nouvelle version avec le gestionnaire de paquets du système, et de redémarrer l’instance.
Note
Afin de s’assurer qu’un retour arrière est toujours possible, il est conseillé de conserver l’ancienne version des paquets dans un dépôt local. Il suffira de les réinstaller pour revenir à la version mineure précédente.
Dans cette section, nous allons aborder la mise à jour des paquets lorsque PostgreSQL a été installé via les dépôts communautaires.
Attention
Ce qui suit utilise la version 16. Voir dans la page suivante pour les autres versions.
Debian¶
Mise à jour de l’index de paquets¶
Sous Debian, il faut utiliser la commande apt update (en root) pour mettre à jour l’index des paquets.
Vérification de la présence de la nouvelle version¶
La commande suivante permet de vérifier la présence de nouvelles versions :
apt-cache policy postgresql-16
postgresql-16:
Installed: 16.1-1.pgdg100+1
Candidate: 16.2-1.pgdg100+1
Version table:
16.2-1.pgdg100+1 500
500 http://apt.postgresql.org/pub/repos/apt buster-pgdg/main amd64 Packages
500 https://apt-archive.postgresql.org/pub/repos/apt buster-pgdg-archive/main amd64 Packages
*** 16.1-1.pgdg100+1 500
500 https://apt-archive.postgresql.org/pub/repos/apt buster-pgdg-archive/main amd64 Packages
100 /var/lib/dpkg/status
Téléchargement des paquets¶
Afin de réduire l’indisponibilité, nous commençons par simplement télécharger les paquets :
apt install --download-only postgresql-16 postgresql-client-16 postgresql-client-common postgresql-common postgresql-doc-16
Arrêt de l’instance et installation des paquets¶
Lister les instances :
pg_lsclusters
Ver Cluster Port Status Owner Data directory Log file
16 main 5432 online postgres /var/lib/postgresql/16/main /var/log/postgresql/postgresql-16-main.log
Arrêter l’instance :
Mettre à jour les paquets :
apt install --only-upgrade postgresql-16 postgresql-client-16 postgresql-client-common postgresql-common postgresql-doc-16 postgresql-contrib-16
Attention
Sous Debian, l’instance est redémarrée automatiquement. Ce comportement peut être modifié dans
le fichier start.conf
présent dans le répertoire /etc/postgresql/<version>/main/
.
Démarrage de l’instance¶
Si l’instance n’a pas été démarrée pendant la mise à jour :
Sauvegarde des anciens paquets¶
Note
Afin de s’assurer qu’un retour arrière est toujours possible, il est conseillé de conserver l’ancienne version des paquets dans un répertoire local. Il suffira de les réinstaller pour revenir à la version mineure précédente en cas de problème.
Les paquets sont stockés dans le répertoire /var/cache/apt/archives
.
Il suffit de les copier dans un autre répertoire, par exemple /var/cache/apt/backup
.
Noter que les anciennes versions des paquets sont aussi disponibles dans la morgue.
CentOS/RedHat/RockyLinux¶
Téléchargement des paquets¶
Afin de réduire l’indisponibilité, nous commençons par simplement télécharger les paquets :
Red Hat 8/RockyLinux
CentOS/Red Hat 6 et 7Sauvegarde des paquets¶
Note
Afin de s’assurer qu’un retour arrière est toujours possible, il est conseillé de conserver l’ancienne version des paquets dans un répertoire local. Il suffira de les réinstaller pour revenir à la version mineure précédente en cas de problème.
Les paquets sont stockés dans le répertoire /var/cache/yum/x86_64/
.
Il suffit de les copier dans un autre répertoire, par exemple /var/cache/yum/backup/
.
Note
Sur les nouvelles versions de RedHat, les paquets se trouvent dans /var/cache/dnf/x86_64/
.
mkdir /var/cache/yum/backup/
cp /var/cache/yum/x86_64/6/pgdg12/packages/postgresql95-* /var/cache/yum/backup/
Warning
Pour que cette manipulation fonctionne, le cache des paquets doit être activé dans yum
.
Pour le vérifier :
Si keepcache
est à 0
, aucun paquet ne sera conservé dans les caches.
Arrêt de l’instance et installation des paquets¶
Pour CentOS 6 :
Pour CentOS 7 :
Mettre à jour les paquets :
yum update postgresql12-server postgresql12 postgresql12-contrib postgresql12-libs postgresql12-llvmjit
Warning
Sous CentOS, l’instance n’est pas redémarrée automatiquement.
Retour en arrière¶
Pour effectuer un retour en arrière vous pouvez suivre la procédure de Downgrade.