PostgreSQL 18-Update für Self-Hoster

Ich habe gerade PostgreSQL 18 für eine Standardinstallation und eine Dual-Container-Konfiguration durchgeführt, und zwar ohne jegliche Probleme. Nochmal vielen Dank an @chrisr und das Team für die einfachen Anleitungen.

Für eine Dual-Container-Konfiguration hinter dem Cloudflare CDN mit R2-Upload-/Backup-Buckets waren die von mir verwendeten Schritte wie folgt:

Schritt 1: Festplatte bereinigen

# Alle ungenutzten Docker-Daten löschen
docker system prune -a -f
# Alte Logs und Apt-Cache löschen
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# Datenbankgröße prüfen
du -sh /var/discourse/shared/data/postgres_data
# Verfügbaren freien Speicherplatz prüfen
df -h -x tmpfs -x devtmpfs

Schritt 2: Wartung & Backup

  1. Bearbeite eine Cloudflare-Wartungsseite, sodass dort „Systemwartung/Aktualisierung, 15–20 Minuten“ steht, und setze einen Neuladungstimer (es wird vielleicht nicht so lange dauern, aber besser sicher als leid!). Aktiviere eine Cloudflare-Worker-Route, um die Wartungsseite anzuzeigen.

  1. Lege ein Backup über die Kommandozeile an:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. Melde dich im Cloudflare R2-Dashboard an und überprüfe den Backup-Ordner, um sicherzustellen, dass die Backup-Datei erfolgreich hochgeladen wurde.

Schritt 3: Sicherer Shutdown

  1. Stoppe zuerst den Web-Container, um alle aktiven Verbindungen zu beenden, und stoppe dann den Datenbank-Container:
cd /var/discourse
./launcher stop web_only
./launcher stop data
  1. Überprüfe, ob PostgreSQL ordnungsgemäß heruntergefahren wurde:
tail -n 20 shared/data/log/var-log/postgres/current

Schritt 4: Upgrade-Rebuilds

Führe die folgenden Befehle in dieser Reihenfolge aus:

./launcher rebuild data # PostgreSQL 18 dumpen, migrieren und wiederherstellen
./launcher rebuild data # Datenbank-Container neu aufbauen
./launcher rebuild web_only # Web-App neu aufbauen

Schritt 5: Optimierung & Bereinigung

  1. Generiere die fehlenden pg18-Tabellenstatistiken, da das Forum sonst langsamer als normal sein wird:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
  1. Teste das Forum, um sicherzustellen, dass alles funktioniert – die Wartungsseite sollte jetzt nicht mehr geladen werden, falls du einen Neuladungstimer dafür eingestellt hast.
  2. Entferne die Cloudflare-Worker-Route zur Wartungsseite (wir wollen das Limit von 100.000 Aufrufen pro Tag nicht erreichen!).
  3. Lösche die alten pg18-Daten, um diesen Speicherplatz wieder freizugeben:
rm -fr /var/discourse/shared/data/postgres_data_old/

Fertig! :partying_face: :clinking_beer_mugs:

3 „Gefällt mir“