Mise à jour PostgreSQL 18 pour les auto-hébergeurs

Je viens d’effectuer la mise à jour vers PostgreSQL 18 pour une installation standard et une configuration à double conteneur sans aucun problème. Merci encore à @chrisr et à l’équipe pour les instructions claires.

Pour une configuration à double conteneur derrière le CDN Cloudflare avec des buckets R2 pour les téléchargements et les sauvegardes, j’ai suivi les étapes ci-dessous :

Étape 1 : nettoyage du disque

# supprimer toutes les données Docker inutilisées
docker system prune -a -f
# vider les anciens journaux et le cache apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# vérifier la taille de la base de données
du -sh /var/discourse/shared/data/postgres_data
# vérifier l’espace libre disponible
df -h -x tmpfs -x devtmpfs

Étape 2 : maintenance et sauvegarde

  1. modifier la page de maintenance Cloudflare pour indiquer une maintenance système de 15 à 20 minutes et définir un minuteur de rechargement (cela ne prendra peut-être pas si longtemps, mais mieux vaut être prudent !). Activer une route de worker Cloudflare pour afficher la page de maintenance.

  1. déclencher une sauvegarde via la ligne de commande :
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. se connecter au tableau de bord Cloudflare R2 et vérifier le dossier de sauvegarde pour confirmer que le fichier de sauvegarde a été téléchargé avec succès

Étape 3 : arrêt sécurisé

  1. arrêter d’abord le conteneur web pour fermer toutes les connexions actives, puis arrêter le conteneur de base de données :
cd /var/discourse
./launcher stop web_only
./launcher stop data
  1. vérifier que PostgreSQL s’est arrêté correctement :
tail -n 20 shared/data/log/var-log/postgres/current

Étape 4 : reconstruction de la mise à jour

exécuter les commandes suivantes dans cet ordre :

./launcher rebuild data # exporte, migre et restaure PostgreSQL 18
./launcher rebuild data # reconstruit le conteneur de base de données
./launcher rebuild web_only # reconstruit l’application web

Étape 5 : optimisation et nettoyage

  1. générer les statistiques manquantes des tables pg18, sinon le forum sera plus lent que d’habitude :
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
  1. tester le forum pour s’assurer que tout fonctionne — la page de maintenance ne devrait plus s’afficher si vous avez défini un minuteur de rechargement.
  2. supprimer la route du worker Cloudflare vers la page de maintenance (pour ne pas atteindre la limite quotidienne de 100 000 requêtes !)
  3. supprimer les anciennes données pg18 pour libérer de l’espace disque :
rm -fr /var/discourse/shared/data/postgres_data_old/

C’est fait ! :partying_face: :clinking_beer_mugs:

3 « J'aime »