Direktes Upgrade der Datenbankhauptversion durchführen

Auf dieser Seite wird beschrieben, wie Sie ein direktes Upgrade der Hauptversion einer Datenbank in einem AlloyDB for PostgreSQL-Cluster ausführen. Informationen zu Anwendungsfällen, Workflows und automatischen Sicherungen für das direkte Upgrade der Datenbankhauptversion finden Sie unter Direktes Upgrade der Datenbankhauptversion.

Upgrade einer Hauptversion der Datenbank planen

So planen Sie ein Upgrade auf eine neue Hauptversion der Datenbank:

  1. Ermitteln Sie die aktuelle Hauptversion Ihrer Datenbank.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

      Zu den Clustern

    2. Wählen Sie einen Cluster aus der Liste aus. Die Seite Übersicht wird angezeigt.

    3. Suchen Sie im Feld Version nach der Hauptversion der Datenbank.

    gcloud

    Informationen zur Installation und den ersten Schritten mit der gcloud CLI finden Sie unter gcloud CLI installieren. Informationen zum Starten von Cloud Shell finden Sie unter Cloud Shell verwenden.

    Führen Sie den folgenden Befehl aus, um die Clusterdetails einschließlich der aktuellen Hauptversion abzurufen:

    gcloud alloydb clusters describe CLUSTER_ID --region=REGION

    Ersetzen Sie die folgenden Werte:

    • CLUSTER_ID: die Cluster-ID
    • REGION: den Standort oder die Region des Clusters

    REST v1beta

    Führen Sie die folgende Anfrage aus, um die Clusterdetails einschließlich der aktuellen Hauptversion abzurufen:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID

    Ersetzen Sie die folgenden Werte:

    • CLUSTER_ID: die Cluster-ID
    • PROJECT_ID: die Projekt-ID
    • REGION: den Standort oder die Region des Clusters

    Verwenden Sie eine der folgenden Optionen, um Ihre Anfrage zu senden:

    curl (Linux, macOS oder Cloud Shell)

    Führen Sie folgenden Befehl aus:

       curl -X GET \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID"
       

    PowerShell (Windows)

    Führen Sie dazu diesen Befehl aus:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }
    
       Invoke-WebRequest `
         -Method GET `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID| Select-Object -Expand Content
       
  2. Wählen Sie in der folgenden Tabelle eine Ziel-Datenbankhauptversion aus. Eine vollständige Liste der von AlloyDB unterstützten Datenbankversionen finden Sie unter Datenbankversionen und Versionsrichtlinien.

    Hauptversion der Quelle Unterstützte Hauptversionen
    POSTGRES_14 POSTGRES_15
  3. Sehen Sie sich die Funktionen der einzelnen Datenbankversionen an.

  4. Ermitteln Sie alle Inkompatibilitäten, die Sie beheben müssen. Neue Hauptversionen können inkompatible Änderungen einführen, sodass Sie möglicherweise den Anwendungscode, das Schema oder die Datenbankeinstellungen ändern müssen.

  5. Bevor Sie mit dem Upgrade der Hauptversion auf Ihrem Produktionscluster beginnen, empfehlen wir Ihnen, Ihren Cluster zu klonen und das Upgrade der Hauptversion auf dem geklonten Cluster zu testen.

    Überprüfen Sie nicht nur, ob das Upgrade erfolgreich abgeschlossen wurde, sondern führen Sie auch Tests durch, um sicherzustellen, dass sich die Anwendung auf dem aktualisierten Cluster wie erwartet verhält.

Cluster auf ein Upgrade der Hauptversion vorbereiten

Verwenden Sie AlloyDB Studio, psql oder andere Verbindungsmethoden, um alle Schritte auszuführen, für die eine Verbindung zur Datenbank erforderlich ist.

  1. Legen Sie Ihre regionsübergreifenden Replikate auf die gewünschte Stufe oder stufen Sie sie hoch. Bei direkten Datenbank-Hauptversions-Upgrades werden keine regionenübergreifenden Replikate unterstützt. Weitere Informationen finden Sie unter Regionenübergreifende Replikation.
  2. Die Codierungs- und Gebietsschemaeinstellungen für die Datenbanken postgres und template1 müssen mit denen der template0-Datenbank übereinstimmen.

    Führen Sie dazu diesen Befehl aus:

    SELECT pg_encoding_to_char(encoding), datcollate, datctype
    FROM pg_database
    WHERE datname IN ('postgres', 'template1', 'template0');
    

    Wenn sich die Werte für die postgres- oder template1-Datenbank von den Werten für die template0-Datenbank unterscheiden, schlägt das Upgrade fehl. Führen Sie die folgenden Schritte aus, um das Problem zu beheben:

    1. Erstellen Sie einen Dump der anderen (nicht als Vorlage verwendeten) Datenbank. Weitere Informationen finden Sie unter Daten exportieren.

    2. Löschen Sie die Datenbank mit dem BefehlDROP DATABASE <database_name>;.

    3. Erstellen Sie die Datenbank mit denselben Codierungs- und Gebietsschemaeinstellungen wie die template0-Datenbank. Führen Sie dazu Folgendes aus:

      CREATE DATABASE <database_name>
      ENCODING = '<template0_encoding>'
      LC_COLLATE = '<template0_datcollate>'
      LC_CTYPE = '<template0_datctype>';
      
    4. Laden Sie die Daten neu. Weitere Informationen finden Sie unter Daten importieren.

  3. Wenn Ihr AlloyDB-Cluster eine Quelle für die logische Replikation ist, deaktivieren Sie die Downstream-Abos und löschen Sie alle Slots für die logische Replikation. Sie können die Abos nach dem Upgrade wieder aktivieren und die logischen Replikationsslots neu erstellen. Wenn die AlloyDB-Instanz nur ein logisches Replikationsziel ist, sind diese Schritte nicht erforderlich. So deaktivieren Sie Abos und löschen Sie logische Replikationsslots:

    1. Deaktivieren Sie jedes Downstream-Abo beim Abonnenten oder Downstream-Replikationsziel. Deaktivieren Sie die Downstream-Abos nicht in der AlloyDB-Instanz, die Sie aktualisieren:

      • Wenn Sie pglogical verwenden, führen Sie den folgenden Befehl aus:

        SELECT * FROM
        pglogical.alter_subscription_disable(subscription_name, immediate);
        

        Ersetzen Sie subscription_name in der Abfrage durch den Namen des vorhandenen Abos. Wenn das Abo sofort deaktiviert werden muss, setzen Sie den Wert des Parameters immediate auf true. Standardmäßig ist der Wert false und das Abo wird erst deaktiviert, wenn die aktuelle Transaktion endet.

        Beispiel:

        postgres=> SELECT * FROM pglogical.alter_subscription_disable('test_sub',true);
        alter_subscription_disable
        ----------------------------
        t
        (1 row)
        
      • Wenn Sie eine andere Erweiterung als pglogical verwenden, führen Sie den folgenden Befehl aus:

        ALTER SUBSCRIPTION <subscription_name> DISABLE;
        
    2. Löschen Sie alle logischen Replikationsslots auf der primären AlloyDB-Instanz mit dem folgenden Befehl:

      SELECT pg_drop_replication_slot(slot_name) FROM pg_replication_slots WHERE slot_type = 'logical';
      
  4. PostgreSQL-Erweiterungen verwalten Weitere Informationen finden Sie unter Datenbankerweiterungen konfigurieren.

    Bei der Prüfung vor dem Upgrade werden Inkompatibilitäten von Erweiterungen erkannt und diese Verstöße zusammen mit empfohlenen Maßnahmen in den Protokollen aufgeführt. Weitere Informationen finden Sie unter Fehler bei der Prüfung vor dem Upgrade ansehen.

    Möglicherweise ist Folgendes erforderlich:

    1. Löschen Sie alle Erweiterungen, die in der Zielversion nicht mehr unterstützt werden.
    2. Aktualisieren Sie PostGIS und die zugehörigen Erweiterungen (address_standardizer, address_standardizer_data_us, postgis_raster, postgis_sfcgal, postgis_tiger_geocoder und postgis_topology) auf eine unterstützte Version in der Ziel-PostgreSQL-Version. Weitere Informationen finden Sie unter PostGIS-Erweiterungen. In der folgenden Tabelle sind die Mindestversionen der unterstützten PostGIS-Erweiterungen für jede PostgreSQL-Hauptversion aufgeführt:

      PostgreSQL-Version Mindestversion von PostGIS
      PG14 3.1
      PG15 3.2

      Wenn Ihre PostGIS-Version beispielsweise 3.1.x ist und Sie von POSTGRES 14 auf POSTGRES 15 upgraden möchten, führen Sie mit dem folgenden Befehl ein Upgrade der PostGIS-Erweiterung aus:

      ALTER EXTENSION postgis UPDATE TO '3.2.3';
      SELECT PostGIS_Version();
      
  5. Prüfen Sie, ob Verbindungen für jede Datenbank zulässig sind, mit Ausnahme von template0. Führen Sie dazu die folgende Abfrage aus und prüfen Sie das Feld datallowconn für jede Datenbank:

    SELECT datname,datallowconn from pg_database;
    

    Der Wert t im Feld datallowconn bedeutet, dass die Verbindung zulässig ist. Der Wert f gibt an, dass keine Verbindung hergestellt werden kann. Die template0-Datenbank darf keine Verbindungen zulassen.

    Führen Sie den folgenden Befehl aus, um Verbindungen zu einer Datenbank zuzulassen:

    ALTER DATABASE <database> WITH ALLOW_CONNECTIONS = true;
    

Direktes Upgrade der Clusterhauptversion durchführen

Das Upgrade der Hauptversion der Datenbank kann je nach Faktoren wie Datenbankgröße, Schemagröße und Anzahl der Lesepoolinstanzen im Cluster zwischen 40 Minuten und 48 Stunden dauern. Die Ausfallzeit der primären Instanz beträgt in der Regel 20 Minuten bis eine Stunde und hängt hauptsächlich vom Datenbankschema ab.

Wenn Sie eine direkte Upgradeanfrage für eine Hauptversion stellen, führt AlloyDB zuerst Prüfungen vor dem Upgrade durch. Wenn AlloyDB feststellt, dass Ihr Cluster nicht für ein Upgrade auf eine Hauptversion bereit ist, schlägt die Anfrage fehl. Weitere Informationen finden Sie unter Fehlerbehebung bei einer direkten Datenbankaktualisierung.

So führen Sie ein direktes Upgrade der Datenbankhauptversion durch:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    Zu den Clustern

  2. Wählen Sie einen Cluster aus der Liste aus. Die Seite Übersicht wird angezeigt.

  3. Klicken Sie auf Upgrade, um das Upgrade der Datenbank-Hauptversion zu starten.

  4. Wählen Sie im Schritt Datenbankversion auswählen eine der verfügbaren Hauptversionen der Datenbank als Ziel-Hauptversion aus.

  5. Klicken Sie auf Weiter.

  6. Geben Sie im Schritt Cluster aktualisieren im Feld Cluster-ID den Namen des Clusters ein.

  7. Klicken Sie auf Upgrade starten. Sie werden zum Schritt Upgrade-Status weitergeleitet, wo Sie den Upgrade-Status prüfen können. Weitere Informationen finden Sie unter Upgrade der Datenbankhauptversion überwachen.

gcloud

Starten Sie das In-Place-Upgrade der Hauptversion mit dem folgenden Befehl:

gcloud alloydb beta clusters upgrade CLUSTER_ID --region=REGION --version=DATABASE_VERSION --async

Hier ein Beispiel für einen Befehl:

gcloud alloydb beta clusters upgrade my-cluster --region=us-central1 --version=POSTGRES_15 --async

REST v1beta

Starten Sie das In-Place-Upgrade der Hauptversion mit dem folgenden Befehl:

PATCH https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:upgrade

JSON-Text anfordern:

{
  "version": "DATABASE_VERSION"
}

Ersetzen Sie den Wert durch den Enum für die Hauptversion der Zieldatenbank. Dieser muss höher als die aktuelle Version sein.

Beispiel für einen JSON-Anfragetext:

{
"version": "POSTGRES_15"
}

Upgrade der Hauptversion des Clusters beobachten

Nachdem das In-Place-Upgrade der Datenbankversion gestartet wurde, können Sie den Upgrade-Status über die Google Cloud Console, die gcloud CLI oder die REST API beobachten.

Console

So prüfen Sie den Upgrade-Status in der Google Cloud Console:

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    Zu den Clustern

  2. Wählen Sie den Cluster aus, der aktualisiert werden soll. Die Seite Übersicht wird angezeigt.

  3. Öffnen Sie die Seite Übersicht.

  4. Klicken Sie auf Upgrade-Status. Die Seite Upgrade-Status wird angezeigt, auf der Sie den Status des Upgrades prüfen können.

gcloud

So prüfen Sie den Upgrade-Status in der gcloud CLI:

  1. Rufen Sie die Vorgangs-ID des Upgrades mit dem folgenden Befehl ab. Ersetzen Sie vor dem Ausführen des Befehls die Variable CLUSTER_ID durch den Namen des Clusters:

    gcloud alloydb operations list --cluster=CLUSTER_ID --region=REGION_ID --filter=metadata.verb:upgrade

    Der gcloud CLI-Aufruf, mit dem ein Upgrade auf eine neue Hauptversion ausgelöst wird. alloydb beta clusters upgrade, gibt die Vorgangs-ID als synchrone Antwort zurück. Alternativ können Sie den Befehl gcloud alloydb operations list mit dem Flag --cluster verwenden.

    Hier ein Beispiel für einen Befehl:

    gcloud alloydb operations list --cluster=my-cluster --region=us-central1 --filter=metadata.verb:upgrade
  2. Sie können den Status des Upgrades mit dem folgenden Befehl überwachen:

    gcloud alloydb operations describe OPERATION_ID
    --region=REGION
    https://cloud.google.com/sdk/gcloud/reference/alloydb/operations/describe

REST v1beta

So prüfen Sie den Upgrade-Status in der REST API:

  1. Rufen Sie die Vorgangs-ID des Upgrades ab.

    Verwenden Sie die folgende GET-Anfrage mit der Methode operations.list, um alle Upgradevorgänge aufzulisten und denjenigen zu finden, der dem Zielcluster entspricht:

    GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/filter=metadata.verb:upgrade

    Der REST API-Aufruf gibt die Vorgangs-ID als synchrone Antwort zurück.

  2. Überwachen Sie den Status des Upgrades.

    Verwenden Sie eine GET-Anfrage mit der Methode operations.get:

      GET https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

    Ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die Projekt-ID
    • REGION: Der Standort oder die Region des Clusters
    • OPERATION_ID: die ID des Upgradevorgangs, die im vorherigen Schritt abgerufen wurde.

    Das folgende Beispiel zeigt eine Antwort, wenn der Vorgang läuft:

    {
    "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "metadata": {
    "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
    "createTime": "2024-09-16T23:17:39.727319438Z",
    "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
    "verb": "upgrade",
    "requestedCancellation": false,
    "apiVersion": "v1",
    "upgradeClusterStatus": {
       "state": "IN_PROGRESS",
       "cancellable": true,
       "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "IN_PROGRESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "NOT_STARTED"
        },
        {
          "stage": "CLEANUP",
          "state": "NOT_STARTED"
        }
       ]
     }
    },
    "done":false
    }
    

    Das folgende Beispiel zeigt eine Antwort, wenn der Vorgang abgeschlossen ist:

    {
    "operations": [
    {
     "metadata": {
     "@type": "type.googleapis.com/google.cloud.alloydb.v1betaalpha.OperationMetadata",
     "createTime": "2024-09-16T21:52:17.303861317Z",
     "endTime": "2024-09-16T22:29:13.947527949Z",
     "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
     "verb": "upgrade",
     "requestedCancellation": false,
     "apiVersion": "v1beta",
     "upgradeClusterStatus": {
      "state": "SUCCESS",
      "stages": [
        {
          "stage": "ALLOYDB_PRECHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "state": "SUCCESS"
        },
        {
          "stage": "PREPARE_FOR_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "state": "SUCCESS"
        },
        {
          "stage": "CLEANUP",
          "state": SUCCESS"
        }
       ]
     }
    },
    "response": {
         …
    },
    "name":  "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
    "done": true
    }
    ]
    }
    

    Weitere Informationen zur response-Struktur finden Sie unter Antwort auf einen Upgradevorgang.

Antwort auf Upgradevorgang

Die Antwort auf den Vorgang UpgradeCluster enthält Folgendes:

  • status: Status des gesamten Upgradevorgangs. Mögliche Werte sind SUCCESS, FAILED und PARTIAL_SUCCESS..
  • message: Eine kurze Zusammenfassung des Ergebnisses des Upgradevorgangs.
  • clusterUpgradeDetails: Upgradedetails für die Cluster, die aktualisiert werden. Dieses Feld ist ein Array. In AlloyDB ist nur ein Cluster-Upgrade zulässig. Es darf also nur einen Eintrag geben.
    • name: Vollständig qualifizierter Name des Clusters.
    • upgradeStatus: den Status des Cluster-Upgrades. Mögliche Werte sind SUCCESS, FAILED und PARTIAL_SUCCESS. PARTIAL_SUCCESS bedeutet, dass mindestens eine Lesepoolinstanz nicht aktualisiert werden kann.
    • clusterType: den Clustertyp. Mit AlloyDB können Sie nur ein einzelnes PRIMARY-Cluster upgraden. Dieser Typ muss immer PRIMARY sein.
    • databaseVersion: die aktuelle Datenbankversion des Clusters.
    • stageInfo: Informationen zu den Upgradephasen des Kerns.
      • status: SUCCESS oder FAILED
      • logs_url: Link zu den von der Phase generierten Protokollen. Bei Phasen, für die keine Protokolle generiert werden, ist das Feld leer.
    • instanceUpgradeDetails: Informationen zum Upgrade aller Instanzen im Cluster.
      • name: Vollständiger qualifizierter Name der Instanz
      • upgradeStatus: SUCCESS oder FAILED
      • instanceType: PRIMARY oder READ_POOL

Hier ist eine Beispielantwort für einen Upgradevorgang:

"response": {
  "@type": "type.googleapis.com/google.cloud.alloydb.v1alpha.UpgradeClusterResponse",
  "status": "SUCCESS",
  "message": "Cluster upgraded successfully.",
  "clusterUpgradeDetails": [
    {
      "name": "projects/1234/locations/us-central1/clusters/abc",
      "upgradeStatus": "SUCCESS",
      "clusterType": "PRIMARY",
      "databaseVersion": "POSTGRES_15",
      "stageInfo": [
        {
          "stage": "ALLOYDB_PRECHECK", 
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PG_UPGRADE_CHECK",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "PRIMARY_INSTANCE_UPGRADE",
          "status": "SUCCESS",
          "logsUrl": "https://console.cloud.google.com/logs/query..."
        },
        {
          "stage": "READ_POOL_INSTANCES_UPGRADE",
          "status": "SUCCESS",
        }
      ],
      "instanceUpgradeDetails": [
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/primary",
          "upgradeStatus": "SUCCESS",
          "instanceType": "PRIMARY",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read1",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        },
        {
          "name": "projects/1234/locations/us-central1/clusters/abc/instances/read2",
          "upgradeStatus": "SUCCESS",
          "instanceType": "READ_POOL",
        }
      ]
    }
  ]
}

Upgradelogs ansehen

AlloyDB veröffentlicht alle Upgrade-Protokolle unter dem Protokollnamen postgres_upgrade.

So rufen Sie Protokolle zu Upgrades auf:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

    Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis aus, dessen Zwischenüberschrift Logging ist.

  2. Wählen Sie alloydb.googleapis.com/postgres_upgrade als Lognamen aus. Das entspricht der Abfrage "logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade".

  3. Verwenden Sie die folgenden Labels, um die Protokolle zu filtern:

    Label Beschreibung

    LOG_TYPE

    Upgrade-Phase, in der das Protokoll generiert wurde. Mögliche Werte sind ALLOYDB_PRECHECK, PG_UPGRADE_CHECK und PG_UPGRADE.

    OPERATION_NAME

    Vollständiger Name des Upgradevorgangs.

    FILE_NAME

    Wird nur für pg_upgrade_check- und pg_upgrade-Protokolle ausgefüllt und entspricht den Protokolldateien, die vom Dienstprogramm pg_upgrade generiert wurden.

Im Folgenden finden Sie eine Beispielabfrage, die AlloyDB-Vorabprüfungsprotokolle für einen bestimmten Vorgang zurückgibt:

logName="projects/project1234/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
labels.LOG_TYPE="ALLOYDB_PRECHECK"
labels.OPERATION_NAME="projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID"

Weitere Informationen zu Upgradeprüfungen finden Sie unter Direktes Upgrade der Datenbank-Hauptversion durchführen.

Upgrade-Logs für einen Cluster ansehen

So rufen Sie die Upgrade-Protokolle für einen Cluster auf, wenn Sie die Vorgangs-ID nicht kennen und der Vorgang abgelaufen ist:

  1. Rufen Sie die AlloyDB-Pre-Check-Logs für Ihren Cluster ab.

    logName="projects/PROJECT_ID/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.LOG_TYPE="ALLOYDB_PRECHECK"
    resource.labels.cluster_id=CLUSTER_ID
    
  2. Suchen Sie die Operation_ID im OPERATION_NAME-Loglabel.

    Im folgenden Beispiel ist Operation_ID von OPERATION_NAME operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013.

    labels.OPERATION_NAME="projects/myproject/locations/us-central1/operations/operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    
  3. Abfrage aller postgres_upgrade-Protokolle für einen bestimmten Vorgang.

    logName="projects/production-1/logs/alloydb.googleapis.com%2Fpostgres_upgrade"
    labels.OPERATION_NAME="operation-1728225968201-623cff6ed1e02-e34b7191-3cd92013"
    

Direktes Upgrade der Datenbankhauptversion abbrechen

Sie können ein laufendes Upgrade auf eine neue Hauptversion über die Google Cloud Console, die gcloud CLI oder die REST API abbrechen.

Vorgangs-ID ermitteln

Wenn Sie das Upgrade auf eine neue Hauptversion mit der gcloud CLI oder der REST API abbrechen möchten, benötigen Sie die Vorgangs-ID. Sie müssen diese ID im gcloud CLI- oder REST API-Befehl angeben, damit AlloyDB weiß, welcher Vorgang abgebrochen werden soll.

Das Upgrade kann nicht mehr abgebrochen werden, wenn das Upgrade der primären Instanz einen bestimmten Punkt erreicht hat.

Wenn Sie das direkte Upgrade einer Hauptversion starten, wird die Vorgangs-ID im Feld name der Antwort zurückgegeben. Beispiel für eine Antwort

Sie können die Vorgangs-ID auch durch einen operations.list-Aufruf auf dem AlloyDB-Cluster ermitteln.

Upgrade abbrechen

So kündigen Sie ein aktives Upgrade auf eine neue Hauptversion:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Cluster auf.

    Zu den Clustern

  2. Wählen Sie einen Cluster aus der Liste aus. Die Seite Übersicht wird angezeigt.

  3. Klicken Sie auf Upgrade-Status.

  4. Klicken Sie auf Abbrechen. Wenn das Upgrade nicht storniert werden kann, ist diese Schaltfläche ausgegraut.

gcloud

Verwenden Sie den Befehl gcloud alloydb operations cancel, um den Vorgang abzubrechen:

gcloud alloydb operations cancel OPERATION_ID

Ersetzen Sie die Variable OPERATION_ID durch die ID des Vorgangs.

Wenn cancellable in UpgradeClusterStatus false in der Ausgabe des Befehls gcloud alloydb operations cancel ist, ignoriert AlloyDB die Stornierungsanfrage und fährt mit dem Upgrade fort. In diesem Fall gibt die API keinen Fehler aus und eine leere Antwort zurück. Weitere Informationen zum Upgradestatus finden Sie unter Upgrade der Clusterhauptversion überwachen.

REST v1beta

Führen Sie dazu diesen Befehl aus:

POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID:cancel

Ersetzen Sie diese Werte in den folgenden Anweisungen:

  • PROJECT_ID: Projekt-ID.
  • OPERATION_ID: die ID des Import- oder Exportvorgangs.

Wenn cancellable in UpgradeClusterStatus false ist, können Sie das Upgrade nicht stornieren.

Verwenden Sie eine der folgenden Optionen, um Ihre Anfrage zu senden:

curl (Linux, macOS oder Cloud Shell)

Führen Sie dazu diesen Befehl aus:

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d "" \
            "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID/cancel"
  

PowerShell (Windows)

Führen Sie dazu diesen Befehl aus:

       $cred = gcloud auth print-access-token
       $headers = @{ "Authorization" = "Bearer $cred" }

       Invoke-WebRequest `
         -Method POST `
         -Headers $headers `
         -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/operations/OPERATION_ID/cancel"| Select-Object -Expand Content
    

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

Antwort

Dieser REST API-Aufruf gibt keine Antwort zurück.

Direktes Upgrade auf eine Hauptversion abschließen

Um das Upgrade auf die neue Hauptversion abzuschließen, stellen Sie über AlloyDB Studio, psql oder andere Verbindungsmethoden eine Verbindung zu einer AlloyDB-Instanz her.

Wenn Sie ein anderes System als AlloyDB verwenden, finden Sie in der Systemdokumentation eine Anleitung zum Herstellen einer Verbindung.

Führen Sie nach dem Upgrade Ihres Clusters die folgenden Schritte aus, um das Upgrade abzuschließen:

  1. Wenn Sie pglogical zuvor deaktiviert haben, aktivieren Sie die pglogical-Replikation wieder. Wenn Sie die pglogical-Replikation aktivieren, wird automatisch der erforderliche Replikations-Slot erstellt.

    1. Löschen Sie das Abo pglogical auf dem Zielreplikat mit dem folgenden Befehl:

      select pglogical.drop_subscription(subscription_name name);
      

      Ersetzen Sie name durch den Namen des vorhandenen Abos. Beispiel:

      postgres=> select pglogical.drop_subscription(subscription_name:= 'test_sub');
      -[ RECORD 1 ]-----+--
      drop_subscription |1
      
    1. Erstellen Sie das pglogical-Abo auf dem Ziel oder Replikat neu, indem Sie der primären AlloyDB-Instanz die folgenden Verbindungsdetails mitteilen:

      SELECT pglogical.create_subscription(
       subscription_name :='test_sub',<br>
       provider_dsn := 'host=primary-ip port=5432 dbname=postgres user=replication_user password=replicapassword'
      );
      
    2. Prüfen Sie den Status des Abos mit folgendem Befehl:

      SELECT * FROM pglogical.show_subscription_status('test_sub');
      
    3. Testen Sie die Replikation, indem Sie Schreibtransaktionen ausführen und prüfen, ob die Änderungen am Ziel sichtbar sind.

  1. Aktualisieren Sie die Datenbankstatistiken.

    Führen Sie nach Abschluss des Upgrades ANALYZE auf Ihrem primären Cluster aus, um die Systemstatistiken zu aktualisieren. Genaue Statistiken sorgen dafür, dass der PostgreSQL-Abfrageplaner Abfragen optimal verarbeitet. Fehlende Statistiken können zu ungenauen Abfrageplänen führen, die wiederum die Leistung beeinträchtigen und zu viel Arbeitsspeicher belegen können.

  2. Führen Sie Akzeptanztests durch, um zu prüfen, ob das aktualisierte System wie erwartet funktioniert.

  3. Prüfen Sie, ob die Hauptversion der aktualisierten Datenbank in der Google Cloud Console auf der Seite Übersicht des Clusters angezeigt wird.

Wiederherstellung der vorherigen Hauptversion

Wenn das aktualisierte Datenbanksystem nicht wie erwartet funktioniert, müssen Sie es möglicherweise auf den Zustand vor dem Upgrade zurücksetzen. Dazu können Sie eine Sicherung aus der Zeit vor dem Upgrade wiederherstellen – entweder die, die AlloyDB während des Upgrades automatisch erstellt, oder eine vorhandene Sicherung aus der Zeit vor dem Upgrade. So erstellen Sie einen neuen Cluster mit dem Zustand vor dem Upgrade.

So stellen Sie den Zustand vor dem Upgrade wieder her:

  1. Wählen Sie eine Sicherung vor dem Upgrade aus, aus der wiederhergestellt werden soll. Während des Upgrades erstellt AlloyDB automatisch eine Sicherung vor dem Upgrade mit dem Präfix pre-upgrade-bkp. Weitere Informationen finden Sie unter Liste der Sicherungen ansehen.

  2. Starten Sie eine Wiederherstellung aus der Sicherung vor dem Upgrade. Dadurch wird ein neuer Cluster mit der vorherigen PostgreSQL-Version erstellt. Weitere Informationen finden Sie unter Cluster aus einer gespeicherten Sicherung wiederherstellen.

  3. Verbinden Sie Ihre Anwendung. Aktualisieren Sie Ihre Anwendung mit Details zum wiederhergestellten Cluster und seinen Lesereplikaten. Sie können die Verarbeitung des Traffics im wiederhergestellten Cluster fortsetzen.

Sie können auch eine Wiederherstellung zu einem bestimmten Zeitpunkt vor dem Upgrade ausführen. Weitere Informationen finden Sie unter Wiederherstellung zu einem bestimmten Zeitpunkt verwenden.

Beschränkungen

Die folgenden Einschränkungen wirken sich auf In-Place-Hauptversionsupgrades von AlloyDB aus:

  • Ein direktes Upgrade einer Hauptversion ist bei einem sekundären Cluster nicht möglich.
  • Das Upgrade von Instanzen mit mehr als 1.000 Datenbanken von einer Version auf eine andere kann lange dauern.
  • AlloyDB unterstützt keine Upgrades von Clustern, die pg_largeobject_metadata verwenden. Wenn select count(*) from pg_largeobject_metadata; ungleich 0 ist, schlägt das Upgrade fehl.
  • Das Upgrade der Hauptversion kann abgeschlossen sein, bevor die Sicherung vor oder nach dem Upgrade abgeschlossen ist, insbesondere bei einer großen Datenbank mit weniger Objekten.
  • Zwischen dem Zeitpunkt, zu dem die Schreibvorgänge in der aktualisierten Instanz wieder aufgenommen werden, und dem Zeitpunkt, zu dem die Sicherung nach dem Upgrade erstellt wird, kann es eine kurze Verzögerung geben. Das bedeutet, dass der Inhalt der Sicherung nach dem Upgrade möglicherweise nicht mit dem Inhalt der Datenbank vor dem Upgrade der Hauptversion übereinstimmt.
  • Sicherungen vor dem Upgrade werden möglicherweise trotzdem erstellt, wenn ein direktes Upgrade auf eine neue Hauptversion fehlschlägt.
  • Da automatische Sicherungen für Upgrades kontinuierlich erstellt werden, können sie erst gelöscht werden, wenn die maximale Aufbewahrungsdauer für kontinuierliche Sicherungen und Wiederherstellung erreicht ist. Wenn die maximale Aufbewahrungsdauer erreicht ist, werden die Sicherungen automatisch gelöscht. Alternativ können Sie die Sicherungen manuell mit der gcloud CLI löschen. Weitere Informationen finden Sie unter Einschränkungen beim Löschen von Sicherungen.

Nächste Schritte