DBAtlas · Atlas für Datenbankbetrieb

PostgreSQL-Minor-Update (Patch)

PostgreSQLStufe: MittelDauer: 20–60 Min.

Minor-Update innerhalb derselben Hauptversion (z. B. 17.4 → 17.x): Prüfung der Release Notes, Backup und Aufbewahrung der vorhandenen RPM/deb-Pakete für den Rückweg. Auf einem einzelnen Server mit kurzer Downtime; in einem Cluster mit Streaming Replication werden zuerst die Standbys und danach per Switchover der Primary aktualisiert (rolling); in einem Patroni-Cluster werden die Replicas mit patronictl restart und der Leader nach patronictl switchover aktualisiert. Inklusive Extension-Update, Verifizierung und Runbook für das Zurückrollen (Downgrade). Am Ende laufen alle Server mit derselben neuen Minor-Version, und die Dateien der vorherigen Version stehen dir für den Rückweg zur Verfügung.

Wechselt die Hauptversion (z. B. 16 → 17), verwendest du statt dieses Guides pg-major-upgrade; das Update der Patroni-Software selbst steht in pg-patroni.

Topologie: 1 Server, Primary + Standbys oder Patroni-Cluster

Szenarien

  • Minor-Update — Wechsel auf eine neue Minor-Version innerhalb derselben Hauptversion (z. B. 17.4 → 17.6): Sicherheits- und Fehlerkorrekturen. Auf einem einzelnen Server kurze Downtime, im Cluster rolling.
  • Zurückrollen: auf die vorherige Minor-Version zurück (Downgrade) — In der neuen Minor-Version ist ein Fehler bzw. eine Regression aufgetreten: Mit den gesicherten RPM/deb-Paketen der vorherigen Version wird zurückgerollt. Das Datenverzeichnis bleibt unverändert.

Vor dem Start

  • PostgreSQL … ist aus dem PGDG-Repository installiert und läuft (pg-install). Das Update erfolgt innerhalb derselben Hauptversion; für … → eine andere Hauptversion verwendest du den Guide pg-major-upgrade.
  • Die Release Notes jeder Minor-Version zwischen aktueller und Zielversion sind gelesen. Insbesondere ist notiert, ob im Abschnitt „Migration to Version …“ zusätzliche Schritte (REINDEX, Änderung einer Einstellung) verlangt werden: https://www.postgresql.org/docs/release/
  • Die Server erreichen das PGDG-Repository oder einen internen Mirror, und der Mirror ist aktuell.
  • Das Wartungsfenster ist genehmigt… (der Dienst ist einige Sekunden bis einige Minuten nicht verfügbar)… (beim Switchover/Restart brechen Verbindungen für einige Sekunden ab)…; das Anwendungsteam ist informiert.
  • Das letzte Backup war erfolgreich… (pgbackrest info status ok)…, und von den Servern lassen sich VM- bzw. Platten-Snapshots erstellen.
  • Alle Standbys sind im Zustand streaming und ohne Verzögerung.
  • Da sich nach dem Switchover die Rollen ändern, erlaubt die pg_hba.conf jedes Nodes replication-Verbindungen von den anderen Nodes, und das Passwort von … steht auf allen Nodes in der Datei ~/.pgpass des Benutzers postgres.
  • Der Cluster wird nicht von einem HA-Werkzeug wie Patroni oder repmgr verwaltet. Verwaltet ihn Patroni, wähle unter Topologie Patroni; zu repmgr siehe die Hinweise. Die manuellen Switchover-Schritte dieses Wegs kollidieren mit den Entscheidungen eines HA-Werkzeugs.
  • Der Patroni-Cluster ist gesund: ein Leader, alle Replicas streaming, Lag klein und Maintenance mode aus. … ist der aktuelle Leader; die Replica-Namen entsprechen den Patroni-Membernamen.
  • Ändernde patronictl-Befehle (restart, switchover) verlangen eine Authentifizierung an der REST API; Benutzer und Passwort stehen auf allen Nodes in der Datei /etc/patroni/patroni.env (Installation nach pg-patroni). Verwendest du einen anderen Aufbau, muss restapi.authentication in der Datei definiert sein, die patronictl über -c liest.
  • Vor dem Update wurden die RPM/deb-Dateien der vorherigen Version im Verzeichnis … gesichert, und die vorherige Versionsnummer steht in …/prev-version.txt. Fehlt die Sicherung, musst du die vorherige Version aus dem Repository herunterladen (EL: PGDG hält ältere Versionen vor; Debian/Ubuntu: apt-archive.postgresql.org).

Phasen der Anleitung

  • Vorabprüfung — Aktuelle Version festhalten · Versionen im Repository auflisten · Release Notes prüfen · Installierte Extensions auflisten · Lange Transaktionen und Prepared Transactions prüfen
  • Backup und Rückfallpunkt — Backup erstellen (pgBackRest) · Backup erstellen (pg_dumpall + Snapshot) · Vorhandene RPM/deb-Dateien sichern
  • Patroni-Cluster: Vorabprüfung — Cluster-Status und Rollen prüfen
  • Update — Checkpoint ausführen · PostgreSQL stoppen · Software aktualisieren · PostgreSQL starten
  • Update des Primary (kurze Downtime) — Checkpoint ausführen · Primary stoppen · Software aktualisieren · Primary starten
  • Switchover und Update des alten Primary — Prüfen, ob die Replikation aktuell ist · Schreibzugriffe der Anwendungen stoppen · Alten Primary sauber herunterfahren und letzten Checkpoint notieren · …: vollständigen WAL-Empfang prüfen und promoten · Anwendungen auf den neuen Primary umleiten · Replication Slot für den alten Primary anlegen …
  • Leader: Switchover und Update des alten Leaders — Alter Leader: Software aktualisieren · Switchover: … wird Leader · Alten Leader (…) neu starten · Endzustand des Clusters prüfen
  • Extensions und Verifizierung — Extensions aktualisieren (ALTER EXTENSION … UPDATE) · Extensions aktualisieren (ALTER EXTENSION … UPDATE) · Zusätzliche Schritte aus den Release Notes ausführen · Version und Status prüfen · Logs nach Fehlern durchsuchen · Backup nach dem Update …
  • Zurückrollen (Downgrade) — Vorherige Version prüfen · …: stoppen, vorherige Version installieren, starten · …: vorherige Version installieren und mit Patroni neu starten · Leader: vorherige Version installieren · Leader übergeben und alten Leader neu starten · …Primary stoppen…PostgreSQL stoppen… …
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →