Mise à jour majeure de notre serveur de base de données

Le mois d’août se prête au tâches de fond. La semaine dernière nous avons réalisé la migration de notre instance PostgreSQL/PostGIS de la version 13 à la version 17.

L’occasion de passer d’un service « dockerisé » sur un hôte à l’OS proche de la fin de vie à un service s’exécutant sur un OS tout frais sur une machine plus costaude.

L’occasion aussi d’installer quelques extensions que nous attendions impatiemment.

L’extension pg_cron pour faciliter la mise en œuvre de tâches cron par l’équipe, mais surtout  pl-python pour plus d’interactions avec notre serveur ODK Central grâce aux fonctions pl-pyodk. De quoi partager des référentiels d’objets entre nos applications métier (web, lizmap et QGIS) et nos applications mobiles (ODK Collect) et entre nos bases de données transversales et « projet ».
Nous avons aussi installé le connecter ogr-fdw permettant d’inerragir depuis nos bases de données avec divers sources de données géo (services web, fichiers…)

Les grandes étapes :

Création du nouveau serveur

  • installation et mise à jour de l’OS
  • configuration du pare-feu
  • création et montage des volumes (un pour les données de PostgreSQL, un provisoire pour accueillir les dumps de l’ancien serveur
  • Installation de PostgreSQL et des paquets utiles aux extensions
  • Paramétrage et Tuning de l’instance PostgreSQL avec pg_tune

Isolement de l’ancien serveur

  • Arrêt des connexions sur l’ancienne instance (pg_hba.conf restrictif)
  • Arrêt de l’ensemble des tâches cron

Sauvegarde des rôles et des bases de données

26 bases de données sont servies par notre instance, la plus ancienne date de 2006 et elle est le point d’entrée de nos données métier dans le SI.

Restauration sur le nouvel hôte (une à une)

On commence par les rôles puis on restaure chacune des bases en redirigeant les messages d’erreur vers un fichier de log consulté en fin de processus

Mise en ligne du nouveau serveur

  • récupération de l’adresse IP de l’ancienne instance, de manière à ne pas casser les nombreuses paramétrages d’outils connectés à ce serveur
  • Test de connexion
  • Ouverture des accès (restauration du fichier pg_hba.conf)

Correction des erreurs rencontrées

Ces erreurs non bloquantes étaient toutes des erreurs rencontrées lors du peuplement des vues matérialisées. Certaines de ces vues utilisent des serveurs de données externe (FDW vers d’autres bases de l’instance) dont le port à changer avec la migration de l’instance. La modification du port des serveurs externes a permis de résoudre l’ensemble des erreurs.

Relance des tâches cron.

Ces tâches cron interrogent régulièrement des serveurs distants, PostgreSQL ou autres (ODK Central) pour collecter ou publier des données.

Bilan

Migration sans encombre et sans impact sur le travail de l’équipe. L’opération a débuté à 18h, une bonne pizza et une bonne playlist plus tard et le nouveau serveur et les services associés étaient fonctionnels le lendemain matin à 5h30.

Cette nouvelle architecture, non « dockerisée » permettra une montée de version plus aisée avec l’outil pg_upgrade.