Von Cloud SQL for PostgreSQL zu AlloyDB for PostgreSQL migrieren

Auf dieser Seite wird beschrieben, wie Sie eine Cloud SQL for PostgreSQL-Instanz migrieren, indem Sie eine Cloud SQL-Sicherung in einen AlloyDB for PostgreSQL kopieren. Wenn Sie eine Cloud SQL-Sicherung in einen AlloyDB-Cluster kopieren, können Sie schnell Daten in Cloud SQL for PostgreSQL laden, um AlloyDB zu testen oder zu migrieren.

Auf dieser Seite wird davon ausgegangen, dass Sie mit Cloud SQL vertraut sind. Wenn Sie AlloyDB noch nicht kennen, lesen Sie die AlloyDB-Übersicht.

Informationen zum Migrieren von Daten aus Cloud SQL zu AlloyDB mithilfe der kontinuierlichen Datenreplikation, finden Sie unter Database Migration Service für PostgreSQL zu AlloyDB.

Folgendes wird nicht unterstützt:

  • Projektübergreifende und regionenübergreifende Wiederherstellungen
  • Instanzen mit kundenverwalteten Verschlüsselungsschlüsseln (Customer Managed Encryption Keys, CMEK)
  • Instanzen mit der Gruppenauthentifizierung von Identity and Access Management (IAM)

Hinweis

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Cloud de Confiance project.

  3. Aktivieren Sie die AlloyDB-, Compute Engine- und Service Networking APIs.

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Informationen zum Zuweisen von Rollen.

    APIs aktivieren

  4. Prüfen Sie, ob Sie Folgendes haben:

Erforderliche Rollen

Damit Sie eine Cloud SQL for PostgreSQL-Sicherung in einen AlloyDB-Cluster kopieren können, weisen Sie sich selbst die folgenden IAM-Rollen für Ihr Projekt zu:

Cloud SQL-Sicherung in einen AlloyDB-Cluster kopieren

Wenn Sie eine Cloud SQL-Sicherung in einen AlloyDB cluster kopieren, wird die Sicherung mit derselben PostgreSQL-Version in AlloyDB wiederhergestellt. Beispiel: Eine Cloud SQL-Sicherung von PostgreSQL 14 wird in einem PostgreSQL 14 cluster wiederhergestellt.Erweiterungsversionen und PostgreSQL-Nebenversionen können sich unterscheiden.

Beim Kopieren einer Sicherung aus Cloud SQL wird nur die Konfiguration der Elemente unterstützt, die im AlloyDB cluster unterstützt werden.

So kopieren Sie eine Cloud SQL-Sicherung in einen AlloyDB standard -Cluster:

Console

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

    Zu den Clustern

  2. Klicken Sie auf Daten migrieren und wählen Sie dann Aus Cloud SQL-Sicherung kopieren aus.
  3. Aktivieren Sie auf der Seite Aus Cloud SQL-Sicherung kopieren die erforderlichen APIs. Wenn Sie die APIs bereits aktiviert haben, müssen Sie sie nicht noch einmal aktivieren.
  4. Wählen Sie auf der Seite Clustertyp auswählen die Option Bereitgestellter Cluster aus.
  5. Klicken Sie auf Clustertyp auswählen.
  6. Wählen Sie die Cloud SQL-Instanz aus, aus der Sie eine Sicherung kopieren möchten und klicken Sie dann auf Instanz auswählen. Sie können Cloud SQL-Instanzen filtern.
    Es werden nur kompatible Datenbankversionen angezeigt. Replikate haben keine Sicherungen und werden nicht in der Liste der verfügbaren Instanzen angezeigt.
  7. Wählen Sie die Sicherung aus, aus der Sie Daten importieren möchten, und klicken Sie dann auf Sicherung auswählen. Auf dieser Seite werden die letzten 1.000 Sicherungen angezeigt.
  8. Geben Sie auf der Seite Bereitgestellten Cluster erstellen Ihre Netzwerkinformationen ein. Die Cluster-ID wird standardmäßig ausgefüllt, Sie können Ihren bereitgestellten Cluster aber auch anpassen.
  9. Klicken Sie auf Cluster erstellen.

Nach Abschluss des Vorgangs wird automatisch eine primäre Instanz erstellt. Sie sehen einen neuen AlloyDB Cluster mit den Daten, die aus der ausgewählten Cloud SQL for PostgreSQL Sicherung kopiert wurden.

Wenn Sie eine Cloud SQL for PostgreSQL Sicherung in einen AlloyDB-Cluster kopieren, werden Datenbank-Flags migriert, wenn sie sowohl in Cloud SQL for PostgreSQL als auch in AlloyDB vorhanden sind. Berechtigungen auf Ressourcenebene werden nicht automatisch migriert. Nach Abschluss des Kopiervorgangs müssen Sie Berechtigungen und Datenbank-Flags, die aufgrund einer Abweichung nicht migriert wurden, manuell einrichten.

Auf der Seite Bereitgestellten Cluster erstellen können Sie prüfen, welche Datenbank-Flags in Cloud SQL for PostgreSQL in AlloyDB unterstützt werden.

gcloud

Wenn Sie die gcloud CLI verwenden möchten, können Sie die gcloud CLI installieren und initialisieren oder Cloud Shell verwenden.

  1. Führen Sie den gcloud beta alloydb clusters migrate-cloud-sql Befehl aus:
          gcloud beta alloydb clusters migrate-cloud-sql CLUSTER_ID \
            --cloud-sql-backup-id=CLOUD_SQL_BACKUP_ID \
            --cloud-sql-instance-id=CLOUD_SQL_INSTANCE_ID \
            --cloud-sql-project-id=CLOUD_SQL_PROJECT_ID \
            --password=PASSWORD \
            --region=REGION \
            --database-version=DATABASE_VERSION \
            --subscription-type=STANDARD
          

    Ersetzen Sie Folgendes:

    • CLUSTER_ID: Cloud SQL for PostgreSQL-Cluster-ID.
    • CLOUD_SQL_BACKUP_ID: Cloud SQL-Sicherungs-ID, aus der migriert werden soll. Dies muss die Sicherungs-ID sein.
    • CLOUD_SQL_INSTANCE_ID: Cloud SQL-Instanz-ID, aus der migriert werden soll. Dies muss die Instanz-ID sein.
    • CLOUD_SQL_PROJECT_ID: Cloud SQL-Projekt-ID, aus der migriert werden soll. Dies muss die Projekt-ID sein.
    • PASSWORD: Passwort des ersten PostgreSQL-Nutzers, das bei der Cluster Erstellung eingerichtet werden soll.
    • REGION: Standort, z. B. asia-east1 oder us-east1. Eine vollständige Liste der Regionen finden Sie unter Regionale Standorte.
    • DATABASE_VERSION: Datenbankversion des Clusters. Dies muss eine der folgenden Versionen sein: POSTGRES_14, POSTGRES_15, POSTGRES_16 oder POSTGRES_17. Die Datenbankversion muss mit der Version der Cloud SQL-Sicherung übereinstimmen.
    • SUBSCRIPTION_TYPE: Abo-Typ des Clusters. Dies muss entweder STANDARD oder TRIAL sein.
  2. Führen Sie den gcloud beta alloydb operations describe Befehl aus, um den Status des Sicherungsvorgangs zu bestätigen:
          gcloud beta alloydb operations describe OPERATION_ID \
            --region=REGION_ID \
            --project=PROJECT_ID
          

    Ersetzen Sie Folgendes:

    • OPERATION_ID: Der Name des Cloud SQL for PostgreSQL-Vorgangs.
    • REGION_ID: Die Region, in der der Cloud SQL for PostgreSQL-Cluster bereitgestellt wird.
    • PROJECT_ID: Die Projekt-ID.
  3. Verwenden Sie den gcloud alloydb instances create Befehl, um eine primäre Instanz zu erstellen.

REST API

  1. Rufen Sie die Methode backupsRuns.list auf, um eine Liste der Sicherungen für die Instanz abzurufen, aus der Sie die Sicherung wiederherstellen möchten:
          GET "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
          

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die Projekt-ID.
    • INSTANCE_ID: Die Instanz-ID.

    JSON-Text der Anfrage:

          {
            "kind": string,
            "items": [
              {
                object (BackupRun)
              }
            ],
            "nextPageToken": string
          }
          

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl (Linux, macOS oder Cloud Shell)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloud auth login, oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

            curl -X GET \
                   -H "Authorization: Bearer $(gcloud auth print-access-token)" \
                   -H "Content-Type: application/json; charset=utf-8" \
                   "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"
            

    PowerShell (Windows)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloud auth login ausgeführt oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest \
              -Method GET \
              -Headers $headers \
              -ContentType: "application/json; charset=utf-8" \
              -Uri
              "https://sqladmin.googleapis.com//sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/backupRuns"|Select-Object -Expand Content
          

    Sie erhalten eine JSON-Antwort ähnlich der folgenden:

    Antwort

    Bei Erfolg enthält der Antworttext eine Liste von BackupRun.

    Die API-Antwort gibt eine Liste der Sicherungen für die Instanz als Array Liste zurück, einschließlich "id": string,.

  2. Rufen Sie die restoreFromCloudSQL Methode auf:

            POST https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL
          

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die Projekt-ID.
    • REGION: Die Region, in der der AlloyDB-Cluster bereitgestellt wird.

    JSON-Text der Anfrage:

          {
            "clusterId": string,
            "cluster": {
              "databaseVersion": "POSTGRES_14/POSTGRES_15/POSTGRES_16/POSTGRES_17",
              "subscriptionType": "STANDARD"
            },
            // Union field source can be only one of the following:
            "cloudsqlBackupRunSource": {
              object (CloudSQLBackupRunSource)
            }
            // End of list of possible types for union field source.
          }
          

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl (Linux, macOS oder Cloud Shell)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloud auth login ausgeführt oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

            curl -X POST \
                   -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:restoreFromCloudSQL"
          

    PowerShell (Windows)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloudauth login, oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

            $cred = gcloud auth print-access-token
            $headers = @{ "Authorization" = "Bearer $cred" }
            Invoke-WebRequest \
              -Method POST \
              -Headers $headers \
              -ContentType: "application/json; charset=utf-8" \
              -InFile request.json \
              -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters:restoreFromCloudSQL"|Select-Object -Expand Content
          

    Sie erhalten eine JSON-Antwort ähnlich der folgenden:

    Antwort

    Bei Erfolg enthält der Antworttext eine Instanz von Operation.

    Im angegebenen Projekt und am angegebenen Standort wird ein neuer Cluster erstellt, wobei ein Volume aus der Sicherung wiederhergestellt wird, auf die in der Nachricht CloudSQLBackupRunSource verwiesen wird.

  3. Wenn sich der Cluster im Status READY befindet, erstellen Sie die primäre Instanz, indem Sie die projects.locationsinstances.create Methode aufrufen:
          POST https://alloydb.googleapis.com/v1beta/{parent=projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID}/instances
          

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die Projekt-ID.
    • REGION: Die Region, in der der AlloyDB-Cluster bereitgestellt wird.
    • CLUSTER_ID: Die Cluster-ID.

    JSON-Text der Anfrage:

            {
              "instanceId": "string",
              "instance": {
                "object": "Instance"
              }
            }
          

    Der Anfragetext enthält eine Instanz von Instance.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl (Linux, macOS oder Cloud Shell)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloud auth login ausgeführt oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

            curl -X POST \
                 -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/instances"
          

    PowerShell (Windows)

    Der folgende Befehl setzt voraus, dass Sie sich mit Ihrem Nutzerkonto in der gcloud CLI angemeldet haben. Dazu haben Sie gcloud init oder gcloud auth login ausgeführt oder die Cloud Shell genutzt, die Sie automatisch in der gcloud CLI anmeldet.

    Um herauszufinden, welches Konto gerade aktiv ist, führen Sie gcloud auth list aus.

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

             $cred = gcloud auth print-access-token
             $headers = @{ "Authorization" = "Bearer $cred" }
             Invoke-WebRequest \
               -Method POST \
               -Headers $headers \
               -ContentType: "application/json; charset=utf-8" \
               -InFile request.json \
               -Uri "https://alloydb.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances"|Select-Object -Expand Content
          

    Sie erhalten eine JSON-Antwort ähnlich der folgenden:

    Antwort

    Bei Erfolg enthält der Antworttext eine neu erstellte Instanz von Operation.

  4. Nachdem die Instanz auf den Status READY aktualisiert wurde, stellen Sie eine Verbindung zur Instanz her und greifen Sie auf die wiederhergestellten Daten aus dem Cloud SQL-Snapshot zu.

Nächste Schritte