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

Je viens de mettre à 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 faciles à suivre.

Pour une configuration à double conteneur derrière Cloudflare CDN avec des buckets R2 pour les téléversements et les sauvegardes, les étapes que j’ai utilisées sont les suivantes :

Étape 1 : nettoyage du disque

# nuke all unused docker data
docker system prune -a -f
# clear old logs and apt cache
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# check database size
du -sh /var/discourse/shared/data/postgres_data*
# check new available free space
df -h -x tmpfs -x devtmpfs

Étape 2 : maintenance et sauvegarde

  1. Modifier une page de maintenance Cloudflare pour indiquer une mise à jour de maintenance du système de 15 à 20 minutes (cela ne prendra peut-être pas si longtemps, mais mieux vaut être prudent !) et définir un minuteur de rechargement d’environ 30 secondes. 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éversé avec succès

Étape 3 : arrêt en toute sécurité

  1. Arrêter d’abord le conteneur web pour tuer 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 : reconstructions de la mise à niveau

Exécuter les commandes suivantes dans cet ordre :

./launcher rebuild data # dumps, migrate and restore postgresql 18
./launcher rebuild data # rebuilds database container
./launcher rebuild web_only # rebuilds web app

Étape 5 : optimisation et nettoyage

  1. Générer les statistiques de tables pg18 manquantes, 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 se charger si vous avez défini un minuteur de rechargement dessus.
  2. Supprimer la route du worker Cloudflare vers la page de maintenance (nous ne voulons pas atteindre la limite quotidienne de 100 000 !)
  3. Supprimer les anciennes données pg18 pour récupérer cet espace disque :
rm -fr /var/discourse/shared/data/postgres_data_old/

terminé ! :partying_face: :clinking_beer_mugs:

7 « J'aime »