Retour au journal

Open source et développement

PostgreSQL 19 : tester sa migration sur un environnement isolé

PostgreSQL 19 Beta 4 apporte REPACK, la réplication des séquences et un nouvel autovacuum. Ces fonctions méritent un protocole de test, pas une migration anticipée en production.

7 octobre 20267 min de lecturePar Samir Varga
PostgreSQL 19 : tester sa migration sur un environnement isolé

Ce qu’il faut retenir

  • Au 30 septembre 2026, PostgreSQL 19 est en Beta 4. Le projet prévoit ensuite une release candidate début octobre et indique seulement que la disponibilité générale pourrait intervenir en octobre.
  • Une bêta sert à confronter la version aux charges, extensions et procédures réelles. Les détails de fonctions, les API et les comportements peuvent encore changer.
  • Le test doit couvrir la méthode de migration, les extensions, la réplication, la sauvegarde-restauration, les performances et le retour arrière.
  • REPACK, la réplication des séquences, le nouveau classement d’autovacuum et WAIT sont des hypothèses à mesurer sur un clone, pas des gains à annoncer d’avance.

Beta 4 n’est ni une promesse de date ni une version de production

Le PostgreSQL Global Development Group a publié PostgreSQL 19 Beta 4 le 24 septembre 2026. Son annonce emploie un vocabulaire précis : il s’agit d’un aperçu avant disponibilité générale et certains détails peuvent encore changer. Plusieurs fonctions prévues ont d’ailleurs été retirées entre les bêtas afin de préserver la fiabilité. La prochaine étape annoncée est une release candidate au début d’octobre ; la version finale peut suivre en octobre, sans garantie de jour.

Cette prudence doit rester visible dans un plan interne. Une ligne de feuille de route n’est pas une date d’exploitation. L’équipe peut tester maintenant, mais elle ne fige ni calendrier client ni fenêtre de production avant l’annonce officielle, la publication des paquets supportés et la validation de ses fournisseurs critiques.

Le bon objectif d’une bêta est de produire de l’information : incompatibilités, écarts de performance, durée de migration, comportement des sauvegardes et limites opérationnelles. Une démonstration qui démarre n’est pas une recette.

Un clone représentatif vaut mieux qu’un benchmark abstrait

Le banc d’essai doit reproduire une application suffisamment proche de la production : schéma, volumétrie, distribution des tailles de tables, taux d’écriture, requêtes lentes, pics de connexion, extensions et politiques de maintenance. Les données sensibles sont anonymisées ou synthétiques, mais leur forme statistique doit rester utile. Un petit jeu uniforme masque précisément les défauts que l’on cherche.

L’inventaire commence par la version actuelle de PostgreSQL, le système d’exploitation, l’architecture, les extensions compilées, les pilotes clients, les outils de sauvegarde, le pool de connexions, la supervision et les tâches planifiées. Pour chaque dépendance, le propriétaire indique la compatibilité annoncée, le test exécuté et la solution de repli. Cela prolonge naturellement la discipline d’intégration des API et outils : le contrat réel comprend aussi les versions, les délais d’attente et les modes de panne.

Le clone est isolé. Les identifiants, DNS et secrets interdisent une connexion accidentelle depuis un client de production. Les tests destructifs — restauration, bascule, interruption réseau — sont justement ceux que l’environnement doit permettre.

La migration est un enchaînement mesuré, pas une commande

Les notes de version indiquent qu’un passage depuis une version antérieure nécessite une méthode de migration majeure : sauvegarde et restauration, pg_upgrade ou réplication logique. Le choix dépend de la durée d’arrêt acceptable, du volume, de l’espace disponible, des extensions et de la capacité à maintenir deux environnements.

Pour chaque méthode candidate, l’équipe exécute la séquence complète :

  1. capturer l’état initial, les contrôles d’intégrité et un jeu de requêtes de référence ;
  2. produire la sauvegarde ou préparer la réplication avec des paramètres documentés ;
  3. migrer le clone et enregistrer durée, débit, erreurs et interventions manuelles ;
  4. rejouer les contrôles fonctionnels, les droits, les tâches et les requêtes de référence ;
  5. simuler l’abandon avant puis après ouverture du trafic ;
  6. restaurer l’ancienne version à partir d’une preuve réellement testée.

Un « rollback » théorique n’est pas suffisant : après des écritures sur la nouvelle version, le retour peut exiger une resynchronisation ou une restauration qui modifie fortement la durée d’indisponibilité. La décision doit nommer le point de non-retour et l’autorité qui peut arrêter la fenêtre.

Les coûts temporaires — double stockage, réplication, environnement de test et temps d’astreinte — appartiennent au budget. Le dossier sur le coût complet des API et de l’infrastructure propose une méthode de calcul applicable ici : séparer coûts fixes, coûts variables et coût du risque.

Quatre nouveautés à confronter à un besoin réel

REPACK

PostgreSQL 19 introduit une commande REPACK qui regroupe les usages de VACUUM FULL et CLUSTER. L’option CONCURRENTLY vise une reconstruction sans bloquer lectures et écritures comme le ferait un verrou exclusif prolongé. La Beta 4 corrige encore plusieurs anomalies liées à cette fonction. Le test doit donc mesurer espace temporaire, génération de WAL, durée, impact sur les répliques et comportement en cas d’interruption.

Réplication logique des séquences

La version 19 peut répliquer les valeurs de séquences vers les abonnés. C’est important pour une bascule : des tables synchronisées avec des séquences en retard peuvent créer des collisions après promotion. Il faut tester création d’abonnement, rattrapage, bascule et valeur de chaque séquence, notamment depuis une version antérieure.

Priorisation d’autovacuum

Un nouveau système de score détermine l’ordre de traitement des tables et des workers parallèles peuvent intervenir sur les index. Le bénéfice dépend du profil de charge. Les indicateurs utiles sont retard de vacuum, âge des transactions, volume de tuples morts, durée, entrées-sorties et concurrence avec les requêtes métier. Une amélioration moyenne peut cacher une table critique moins bien servie.

WAIT et lecture après écriture

La commande WAIT permet d’attendre qu’une réplique ait écrit, vidé ou rejoué les changements jusqu’à un point donné. Elle peut simplifier certains parcours de lecture après écriture, mais introduit une attente à budgéter. Testez les délais de réplication normaux, dégradés et interrompus, puis fixez un timeout et un comportement de repli.

Ces essais sont particulièrement pertinents pour des charges de données et de mesure comparables à celles décrites dans le dossier sur l’exploitation des données. Ils doivent toutefois rester détachés de toute promesse commerciale. Un gain observé sur un clone n’est transférable qu’avec ses hypothèses.

Une grille de sortie évite le « ça a l’air stable »

Avant le premier test, l’équipe fixe les seuils : zéro corruption et zéro régression fonctionnelle bloquante ; durée de migration compatible avec la fenêtre ; restauration terminée dans l’objectif de reprise ; latence et débit dans une enveloppe définie ; extensions critiques officiellement compatibles ; observabilité et procédures d’astreinte prêtes. Chaque seuil possède une preuve et un responsable.

La décision comporte trois issues. Continuer les tests si un point reste mesurable mais incomplet. Préparer la production seulement après disponibilité générale, validation de l’écosystème et exercice réussi. Reporter si une dépendance critique, un retour arrière ou une procédure de sauvegarde échoue. Reporter n’est pas perdre le travail : le protocole et les résultats restent réutilisables.

L’open source donne accès au code et au processus de publication, pas à une garantie automatique d’exploitation. Les arbitrages entre maintenance, souveraineté et charge d’équipe rejoignent ceux du dossier sur les modèles ouverts et leurs coûts.

Sources officielles

La prochaine action raisonnable

Créer un clone isolé, choisir une seule méthode de migration et exécuter d’abord le retour arrière. Si l’équipe ne sait pas revenir à l’état initial avec une durée mesurée, elle n’est pas encore en train de tester une migration.