Upgrade auf eine neue übergeordnete Version durchführen

Databases for PostgreSQL bietet drei verschiedene Upgrade-Möglichkeiten:

  • In-Place-Upgrade auf eine neue Hauptversion.
  • Wiederherstellung aus dem Backup.
  • Upgrade von einer schreibgeschützten Replik.

Wenn sich eine Hauptversion einer Datenbank dem Ende ihres Lebenszyklus (End Of Life, EOL) nähert, ist es ratsam, auf eine aktuelle Hauptversion zu aktualisieren.

Die verfügbaren Versionen von „ Databases for PostgreSQL “ finden Sie auf der Katalogseite unter IBM Cloud oder über den Befehl des Cloud Databases-CLI-Plug-ins ibmcloud cdb deployables-showoder über den Endpunkt der „ Cloud Databases “-API /deployables.

Wenn Sie auf eine neue Instanz umsteigen, müssen Sie auch die Verbindungsdaten in Ihrer Anwendung anpassen.

In den folgenden Beispielbefehlen wird für den Befehl „ {id} “ die vollständige CRN der Datenbankinstanz benötigt. Da die CRN Sonderzeichen enthält, muss sie „ URL “-kodiert werden, um einen „not_found“-Fehler zu vermeiden.

Voraussetzungen für ein Upgrade auf eine neuere Hauptversion von „ PostgreSQL “

Bevor Sie mit einem größeren Versions-Upgrade beginnen, sollten Sie alle Erweiterungen, Replikationsobjekte und Anwendungsabhängigkeiten überprüfen, die zuvor gepflegt werden müssen.

Einige Erweiterungen und Objekte der logischen Replikation sind versionsspezifisch oder hängen von serverseitigen Komponenten ab, die mit der Hauptversion von „ PostgreSQL “ übereinstimmen müssen. Wenn Sie diese vor dem Upgrade entfernen, können Sie Fehler vermeiden und nach der Inbetriebnahme der neuen Version nur die unterstützten Objekte neu anlegen.

Zu prüfende Erweiterungen und Objekte der logischen Replikation

Überprüfen Sie vor dem Upgrade die folgenden Punkte:

Erweiterungen

  • pg_repack
  • old_snapshot
  • wal2json
  • anon
  • PostGIS

Replikationsslots

  • Logical replication slots

Anwendungsabhängigkeiten Wenn Sie Erweiterungen oder Replikationsobjekte entfernen, von denen Ihre Anwendungen abhängen, überprüfen Sie Ihre Datenflüsse und das Anwendungsverhalten, bevor Sie mit dem Upgrade fortfahren. Berücksichtigen Sie außerdem mögliche Störungen in Ihrer Anwendungslogik, die von bestimmten Funktionen von „ PostgreSQL “ abhängt.

pg_repack

Löschen Sie vor dem Upgrade den Ordner „ pg_repack “ und erstellen Sie ihn nach dem Upgrade neu. „ pg_repack “ verwendet eine versionsspezifische Erweiterung sowie Client- und Server-Komponenten, die mit der Hauptversion von „ PostgreSQL “ übereinstimmen müssen.

DROP EXTENSION pg_repack;

Erstellen Sie die Erweiterung nach dem Upgrade nur dann neu, wenn Ihre Arbeitslast sie weiterhin benötigt.

CREATE EXTENSION pg_repack;

old_snapshot

Löschen Sie vor dem Upgrade die Datei „ old_snapshot “. Nicht Erstellen Sie es nach dem Upgrade auf „ PostgreSQL “ 18 neu, da es nicht mehr unterstützt wird.

DROP EXTENSION old_snapshot;

wal2json Replikationsslots

Wenn Sie „ wal2json “ für die logische Dekodierung verwenden, müssen Sie vor dem Upgrade alle zugehörigen Replikationsslots löschen. Das Dienstprogramm „ pg_upgrade “ verbietet strikt Upgrades auf eine neue Hauptversion, solange Replikations-Slots vorhanden sind, und löst in diesem Fall einen kritischen Fehler aus, wodurch das Upgrade abgebrochen wird.

Vor dem Upgrade:

  1. Stellen Sie sicher, dass alle ausstehenden WAL-Daten verarbeitet wurden.
  2. Beenden Sie Ihre Anwendung, die den Replikations-Slot nutzt.
  3. Die Replikations-Slots löschen:
SELECT pg_drop_replication_slot('your_slot_name');

Nach dem Upgrade können Sie die Replikationsslots nach Bedarf neu anlegen. Beachten Sie, dass „ wal2json “ nicht über CREATE EXTENSION installiert wird, sondern über Datenbankparameter (wal_level, max_replication_slots, max_wal_senders) und Tabellenberechtigungen konfiguriert wird, die Upgrades nicht verhindern.

anon

Deaktivieren Sie die Erweiterung „ anon “ vor dem Upgrade und aktivieren Sie sie nach dem Upgrade wieder, falls Sie sie weiterhin benötigen. Bevor Sie „ anon “ löschen können, sind noch weitere Schritte erforderlich.

Falls die Erweiterung „ anon “ installiert ist, befolgen Sie die nachstehenden Schritte und führen Sie die Befehle als Administrator aus, bevor Sie das Upgrade durchführen.

  1. Entfernen Sie alle Maskierungsregeln (sofern aktiviert).

    SELECT anon.remove_masks_for_all_columns();
    
  2. Maskierungsrollen deaktivieren (das Upgrade könnte fehlschlagen, wenn Rollen als maskiert markiert sind).

    SECURITY LABEL FOR anon ON ROLE <role_name> IS NULL;
    
  3. Deaktivieren Sie die Erweiterung „ anon “ mit der Option „cascade“.

    DROP EXTENSION anon CASCADE;
    
  4. Wenn die Erweiterung „ anon “ in mehreren Datenbanken innerhalb einer Instanz installiert ist, führen Sie die beschriebenen Schritte für jede Datenbank durch.

  5. Nachdem das Upgrade abgeschlossen ist, aktivieren Sie die Erweiterung „ anon “ erneut und wenden Sie die Maskierungsregeln nach Bedarf erneut an.

Es wird dringend empfohlen, die Daten sowohl vor als auch nach dem Löschen der Erweiterung zu überprüfen, um vor der Durchführung des Upgrades die Konsistenz der Maskierung sicherzustellen.

PostGIS

Wenn Sie PostGIS, verwenden, führen Sie zunächst ein Upgrade von PostGIS durch, bevor Sie PostgreSQL aktualisieren.

SELECT postgis_extensions_upgrade();

Verwenden Sie die folgende Abfrage, um das Upgrade der Erweiterung „ PostGIS “ zu überprüfen.

SELECT postgis_full_version();

Logical replication slots

Löschen Sie vor dem Upgrade alle logischen Replikations-Slots und erstellen Sie diese nach dem Upgrade neu. Logische Slots sind an den Zustand des Quellservers gebunden und sollten auf der aktualisierten Instanz vollständig neu erstellt werden.

SELECT pg_drop_replication_slot('<slot_name>');

Upgrades auf eine neue Hauptversion ohne Systemneustart

Ein In-Place-Major-Version-Upgrade (IPU) ermöglicht es Ihnen, Ihre Bereitstellung auf eine unterstützte Zielversion /docs/databases-for-postgresql?topic=databases-for-postgresql-versioning-policy#version-definitions zu aktualisieren, ohne ein Backup in einer neuen Bereitstellung wiederherzustellen. Bei der Aktualisierung bleiben die bestehenden Verbindungszeichenfolgen erhalten, sodass keine Neukonfiguration erforderlich ist.

Es können jedoch Anpassungen an der Anwendung erforderlich werden, falls die neue Version Kompatibilitätsunterschiede mit sich bringt.

Während des Upgrade-Zeitraums kommt es bei Ihrer Bereitstellung zu einer kurzen Ausfallzeit. Die Dauer hängt von der Größe und Komplexität Ihrer Bereitstellung ab.

Wenn Ihre Anwendungen während des Upgrades weiterhin Daten lesen müssen, können Sie eine /docs/databases-for-postgresql?topic=databases-for-postgresql-read-only-replicas&interface=ui#read-only-replicas-provision bereitstellen und Ihre Anwendung so anpassen, dass sie die Replik verwendet. Sie können die Replik zur Primärinstanz befördern, falls das Upgrade nicht erfolgreich abgeschlossen wird. Weitere Informationen finden Sie unter /docs/databases-for-postgresql?topic=databases-for-postgresql-read-only-replicas&interface=ui#read-only-replicas-ipu.

Databases for PostgreSQL erstellt vor oder nach einem In-Place-Upgrade auf eine neue Hauptversion nicht automatisch Sicherungskopien.

Um die Wiederherstellbarkeit zu verbessern, erstellen Sie Folgendes:

  • Eine Datensicherung vor dem Upgrade zum Schutz Ihres aktuellen Datenstands
  • Eine Datensicherung unmittelbar nach dem Upgrade, um den ersten Wiederherstellungspunkt für die neue Version festzulegen

Wenn Sie nach dem Upgrade keine Sicherung durchführen, steht die Point-in-Time-Wiederherstellung (PITR) für die neue Version erst nach Abschluss der nächsten geplanten Sicherung zur Verfügung.

Backups und PITR-Punkte, die vor dem Upgrade erstellt wurden, bleiben mit der früheren Version verknüpft und können nicht in die aktualisierte Version wiederhergestellt werden. Sie können jedoch weiterhin dazu verwendet werden, die frühere Version in einer neuen Bereitstellung wiederherzustellen.

Logische Replikationsslots

Löschen Sie vor dem Upgrade alle logischen Replikations-Slots und erstellen Sie diese anschließend neu. Logische Replikations-Slots sind an den Zustand des Quellservers gebunden und müssen auf der aktualisierten Instanz neu erstellt werden.

SELECT pg_drop_replication_slot('<slot_name>');

Vorbereitende Schritte

Bitte beachten Sie Folgendes, bevor Sie mit dem Upgrade beginnen:

  • Überprüfen Sie, ob Versions-Upgrades für Ihre Bereitstellung unterstützt werden, indem Sie die Benutzeroberfläche, die API, die Befehlszeilenschnittstelle oder Terraform verwenden.

    Beispiel (CLI):

    ibmcloud cdb capability-show versions postgresql
    
  • Überprüfen Sie die Anforderungen für die Vorabprüfung. Das Upgrade wird auf der Quellumgebung ausgeführt und wird unterbrochen, wenn Risiken festgestellt werden. Stellen Sie sicher, dass:

    • Die Bereitstellung läuft reibungslos
    • Es sind mindestens 10 % freier Speicherplatz verfügbar
    • Die I/O-Auslastung liegt unter 90 %
    • Die Schema-Größe und die Anzahl der Objekte liegen innerhalb der zulässigen Grenzen
    • Die erforderliche Bereinigung der Erweiterungen und logischen Replikationsslots ist abgeschlossen
  • Lesen Sie den Bericht „ https://www.postgresql.org/docs/release/ “, um sich über Kompatibilitätsänderungen zu informieren, die sich möglicherweise auf Ihre Anwendungen auswirken könnten.

  • Ein Downgrade auf eine frühere Version wird nicht unterstützt.

  • Ein In-Place-Upgrade kann nach seinem Start nicht mehr abgebrochen werden.

  • Stellen Sie sicher, dass vor dem Upgrade eine aktuelle Sicherung verfügbar ist.

Unterstützte Upgrade-Pfade vor Ort für Gen2
Quelle PostgreSQL-Version Unterstütztes Ziel für ein In-Place-Upgrade
18 Zukünftige Hauptversionen (sobald verfügbar)

Gen2 beginnt mit „ PostgreSQL “ 18. Upgrade-Pfade zu neueren Versionen werden hinzugefügt, sobald diese unterstützt werden. Informationen zu früheren Versionen (14–17) finden Sie unter /docs/databases-for-postgresql?topic=databases-for-postgresql-upgrading.

Nach Abschluss des Upgrades läuft Ihre Bereitstellung mit einer neuen Hauptversion von „ PostgreSQL “. Backups und PITR-Punkte aus der Zeit vor dem Upgrade gehören zur Zeitachse der früheren Version und können nicht in die aktualisierte Version wiederhergestellt werden.

Um die Wiederherstellungs- und PITR-Funktionen für die neue Version aufrechtzuerhalten, erstellen Sie unmittelbar nach dem Upgrade ein Backup. Diese Sicherung dient als Ausgangsbasis für künftige Wiederherstellungsvorgänge.

Sollte das Upgrade fehlschlagen, können Backups aus der Zeit vor dem Upgrade weiterhin mit PITR verwendet werden, um die frühere Version in einer neuen Bereitstellung wiederherzustellen.

Upgrade über die Benutzerschnittstelle

  1. Erstellen Sie eine Testbereitstellung, indem Sie ein Backup Ihrer bestehenden Bereitstellung mit derselben Version wiederherstellen.

  2. Aktualisieren Sie Ihre Staging-Anwendung, damit sie die Testbereitstellung nutzt, und überprüfen Sie die Funktionalität.

  3. Starten Sie das Upgrade auf der Übersichtsseite, indem Sie auf „Hauptversion aktualisieren“ klicken.

  4. Überprüfen Sie das Verhalten der Anwendung in der aktualisierten Testumgebung.

  5. Aktualisieren Sie Ihre Produktionsumgebung, sobald die Validierung abgeschlossen ist.

    Sobald das Upgrade gestartet wurde, kann es nicht mehr gestoppt oder rückgängig gemacht werden. Stellen Sie sicher, dass eine aktuelle Sicherungskopie verfügbar ist.

Die Frist für den Start des Upgrades legt fest, wie lange der Upgrade-Auftrag Zeit hat, um zu beginnen, bevor er automatisch abgebrochen wird. Legen Sie diesen Wert entsprechend Ihrem Wartungsfenster fest. Wenn das Upgrade beispielsweise 30 Minuten dauert und Ihr Zeitfenster 1 Stunde beträgt, stellen Sie die Ablaufzeit auf 30 Minuten ein. Die Gültigkeitsdauer kann zwischen 5 Minuten und 24 Stunden liegen.

Upgrade über die Anwendungsprogrammierschnittstelle

Verwenden Sie den folgenden Befehl, um ein In-Place-Upgrade zu starten:

curl -X PATCH https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/version \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
  -d '{"version": "15"}'

Weitere Informationen finden Sie unter „ Cloud Databases API “.

Upgrade über die Befehlszeilenschnittstelle

Verfügbar in der CDB-Plugin-Version >= 0.20.0.

So zeigen Sie die verfügbaren Upgrade-Pfade an:

ibmcloud cdb deployment-capability-show <NAME|CRN> versions

So starten Sie ein Upgrade:

ibmcloud cdb deployment-version-upgrade <NAME|CRN> <TARGET_VERSION>

Details zu den Befehlen:

ibmcloud cdb deployment-version-upgrade --help

Verwenden Sie entweder --expire-in oder --expire-at, um die Ablaufzeit festzulegen.

Upgrade über Terraform

Verfügbar in der Terraform-Provider-Version >= 1.79.2.

Um ein Upgrade durchzuführen, aktualisieren Sie den Wert „ version “ in Ihrer Konfiguration.

Wird vor einem Upgrade auf eine Datensicherung verzichtet, kann dies zu Datenverlusten führen, falls das Upgrade fehlschlägt. Stellen Sie sicher, dass eine aktuelle Sicherungskopie verfügbar ist.

Verlängern Sie die Zeitüberschreitung bei Bedarf, da Terraform Zeitüberschreitungen anstelle von Ablaufzeitstempeln verwendet.

Fehlerbehebung

Sollten nach einem erfolgreichen Upgrade Probleme auftreten und Sie zur vorherigen Version zurückkehren müssen, wenden Sie sich bitte an den Support unter IBM Cloud®, um weitere Anweisungen zu erhalten. Führen Sie PITR-Vorgänge oder Wiederherstellungen nicht ohne Anleitung durch, da dies die Wiederherstellung erschweren kann.

Upgrades werden erst ausgeführt, nachdem alle Vorabprüfungen erfolgreich abgeschlossen wurden. Falls das Upgrade blockiert ist, überprüfen Sie Folgendes:

  • Cluster-Zustand (Patroni-Status ist stabil)
  • Ausreichend freier Speicherplatz
  • Akzeptable Auslastung der Festplatten-E/A
  • Beschränkungen hinsichtlich der Schema-Größe und der Objektanzahl

Große Schemata und eine hohe Anzahl von Objekten können die Dauer des Upgrades verlängern.

Sollten die Upgrade-Versuche weiterhin fehlschlagen, erstellen Sie bitte ein Support-Ticket unter https://cloud.ibm.com/login?redirect=%2Funifiedsupport%2Fsupportcenter.

Upgrade von einem Nur-Lese-Replikat durchführen

Führen Sie ein Upgrade durch, indem Sie eine schreibgeschützte Replik konfigurieren. Richten Sie eine schreibgeschützte Replik mit derselben Datenbankversion wie Ihre Bereitstellung ein und warten Sie, bis alle Ihre Daten repliziert sind. Wenn Ihre Bereitstellung und deren Replik synchronisiert sind, wandeln Sie die schreibgeschützte Replik in eine vollständige, eigenständige Bereitstellung um, auf der die neue Version der Datenbank ausgeführt wird, und führen Sie ein Upgrade durch. Um den Upgrade- und Promotionsschritt durchzuführen, senden Sie eine POST-Anfrage an den /deployments/{id}/remotes/promotion Endpunkt und geben Sie im Anfragetext die Version an, auf die Sie aktualisieren möchten.

Diese Anfrage sieht folgendermaßen aus:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false
    }
}' \

skip_initial_backup ist optional. Wenn true festgelegt ist, erstellt die neue Bereitstellung keine Erstsicherung wenn die Hochstufung abgeschlossen ist. Ihre neue Bereitstellung ist in kürzerer Zeit verfügbar, wobei dies auf Kosten einer Sicherung geht. Es wird vor der Ausführung der nächsten automatischen Sicherung keine Sicherung erstellt, sofern Sie keine Sicherung gesondert anfordern.

Probelauf von Hochstufung und Aktualisierung

Um die Auswirkungen größerer Versions-Upgrades zu bewerten, führen Sie einen Testlauf durch. Ein Testlauf simuliert die Beförderung und die Höherstufung, wobei die Ergebnisse in die Datenbankprotokolle geschrieben werden. Über die Integration „Protokollanalyse“ können Sie auf Ihre Datenbankprotokolle zugreifen und diese einsehen. Dadurch wird sichergestellt, dass die von Ihnen derzeit verwendete Version mit ihren Erweiterungen erfolgreich auf die von Ihnen gewünschte Version aktualisiert werden kann.

Für den Probelauf wird für skip_initial_backup der Wert false festgelegt und es wird ein Wert für version definiert.

Der Befehl sieht folgendermaßen aus:

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v5/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{
    "promotion": {
        "version": "14",
        "skip_initial_backup": false,
        "dry_run": true
    }
}' \

Sichern und Wiederherstellen nach einem Upgrade

Sie können Ihre Datenbankversion aktualisieren, indem Sie Ihre Daten unter Wiederherstellung eines Backups in eine neue Bereitstellung übertragen, auf der die neue Datenbankversion ausgeführt wird.

Upgrade über die Benutzerschnittstelle

Führen Sie ein Upgrade auf eine neue Version durch, indem Sie im Menü „ Sicherungen “ Ihres „ Bereitstellungs-Dashboard “ die Option „ Wiederherstellung eines Backups “ auswählen. Klicken Sie bei einer Sicherung auf „Wiederherstellen“, um die Bereitstellungsseite in einem neuen Tab zu öffnen. Dort können Sie einige Optionen für die neue Bereitstellung ändern. Eine der Optionen ist die Datenbankversion, die automatisch mit den für Sie verfügbaren Upgrade-Versionen ausgefüllt wird. Wählen Sie eine Version aus und klicken Sie auf Erstellen, um den Bereitstellungs- und Wiederherstellungsprozess zu starten.

Upgrade über die Befehlszeilenschnittstelle

Um über die CLI von IBM Cloud ein Upgrade durchzuführen und eine Sicherung wiederherzustellen, verwenden Sie den Provisioning-Befehl des Ressourcen-Controllers.

ibmcloud resource service-instance-create <DEPLOYMENT_NAME_OR_CRN> <SERVICE_ID> <SERVICE_PLAN_ID> <REGION>

Die Parameter service-name, service-id, service-plan-id und region sind erforderlich. Geben Sie auch -p mit den Parametern für Version und Sicherungs-ID in einem JSON-Objekt an. Die neue Bereitstellung hat automatisch eine Platte und einen Speicher derselben Größe wie die Quellenbereitstellung zum Zeitpunkt der Sicherung.

Dieser Befehl sieht wie folgt aus:

ibmcloud resource service-instance-create example-upgrade databases-for-postgresql standard us-south \
-p \ '{
  "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
  "version":14
}'

Upgrade über die Anwendungsprogrammierschnittstelle

Führen Sie die erforderlichen Schritte zur Nutzung der Resource-Controller-API durch, bevor Sie diese für ein Upgrade aus einer Sicherung verwenden. Senden Sie anschließend eine Anfrage POST an die API. Die Parameter name, target, resource_group und resource_plan_id sind erforderlich. Geben Sie auch die Version und die Sicherungs-ID an. Die neue Bereitstellung verfügt über die gleiche Speicher- und Plattenzuordnung wie die Quellenbereitstellung zum Zeitpunkt der Sicherung.

Dieser Befehl sieht wie folgt aus:

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "my-instance",
    "target": "bluemix-us-south",
    "resource_group": "5g9f447903254bb58972a2f3f5a4c711",
    "resource_plan_id": "databases-for-postgresql-standard",
    "backup_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71717:backup:06392e97-df90-46d8-98e8-cb67e9e0a8e6",
    "version":14
  }'

Erzwungenes Upgrade

Nach Ablauf des End-of-Life-Datums werden alle aktiven „ Databases for PostgreSQL “-Bereitstellungen, auf denen eine veraltete Version ausgeführt wird, automatisch auf die nächste unterstützte Version aktualisiert. Beispielsweise wird „ PostgreSQL “ 13 (veraltet) auf Version 14 aktualisiert.

Führen Sie das Upgrade vor Ablauf der Lebensdauer durch, um die folgenden Risiken zu vermeiden:

  • Für diese Art von erzwungenem Upgrade werden keine SLAs bereitgestellt.
  • Es kann zu einem gewissen Datenverlust kommen.
  • Es kann zu längeren Ausfallzeiten Ihrer Anwendung kommen.
  • Ihre Anwendung funktioniert möglicherweise nicht mehr, wenn sie mit der neuen Version nicht kompatibel ist.
  • Sie haben keinen Einfluss darauf, wann dieses Upgrade für Ihre Bereitstellung durchgeführt wird.
  • Für dieses erzwungene Upgrade gibt es keinen Rollback-Vorgang.

Die Daten für das Ende des Lebenszyklus finden Sie auf der Seite mit den Versionsrichtlinien.

Probleme mit Rollenberechtigungen bei Versions-Upgrades

Ab „ PostgreSQL “ 16 werden die Berechtigungsregeln für Rollen strenger durchgesetzt. Es handelt sich hierbei um eine architektonische Änderung im Upstream- PostgreSQL, nicht um eine Verhaltensänderung, die speziell IBM® betrifft. In früheren Versionen konnten Rollen mit dem Attribut „ CREATEROLE “ andere Rollen in größerem Umfang verwalten. In „ PostgreSQL “ 16 und höher muss eine Rolle über die Berechtigung „ ADMIN OPTION “ für eine andere Rolle verfügen, um diese zu erteilen oder zu widerrufen. Weitere Informationen finden Sie in den Versionshinweisen zu „ PostgreSQL “ 16, unter „Rollenattribute“ sowie unter „ GRANT “ zum Thema Rollen.

Wenn Sie ein Upgrade von „ PostgreSQL “ 15 oder einer früheren Version auf „ PostgreSQL “ 16 oder eine neuere Version durchführen, überprüfen Sie Ihre Rollenzuweisungen, bevor Sie das In-Place-Upgrade (IPU) starten. Falls die Rollenverwaltung nach dem Upgrade fortgesetzt werden soll, stellen Sie sicher, dass die erforderlichen Rollen mit der Option „WITH ADMIN OPTION“ zugewiesen werden, bevor Sie das Upgrade starten.

Sollten nach dem Upgrade Fehler im Zusammenhang mit Berechtigungen auftreten, zum Beispiel:

ERROR: only roles with the ADMIN OPTION on role "some_role" may grant this role
DETAIL: role "admin" is not permitted to grant role "some_role"

Verwenden Sie die integrierte Hilfsfunktion „ grant_admin_option_to_roles “, um „ ADMIN OPTION “ für bestimmte Rollen wiederherzustellen:

  • Gilt nur für Datenbanken, die von „ PostgreSQL “, „ v15 “ und früheren Versionen auf „ PostgreSQL 16“ und spätere Versionen aktualisiert wurden (sofern der oben beschriebene Fehler auftritt).
  • Akzeptiert eine beliebige Liste von Rollen, auf die die Korrektur angewendet werden soll.
  • Kann nur von der „ admin user “ ausgeführt werden.
  • Kann mehrmals sicher ausgeführt werden (idempotent).

Verwendungsbeispiel:

SELECT grant_admin_option_to_roles('role1', 'role2', 'role3');

Diese Funktion weist dem Benutzer „ admin “ mit der E-Mail-Adresse ADMIN OPTION die angegebenen Rollen (role1, role2, role3) zu, sodass der Benutzer „ admin “ diese Rollen in aktualisierten Instanzen verwalten (zuweisen, widerrufen, ändern oder löschen) kann.

Änderungsprotokoll für PostgreSQL-Hauptversionen

Informationen zu früheren Versionen von „ PostgreSQL “ (14–17) finden Sie unter Gen1 Änderungsprotokoll.