SQL-Datei exportieren

Auf dieser Seite wird beschrieben, wie Sie Daten aus AlloyDB for PostgreSQL-Clustern in SQL-Dumpdateien exportieren.

Informationen zum Migrieren einer gesamten Datenbank von einem unterstützten Datenbank server zu einer neuen AlloyDB-Instanz finden Sie unter Datenbank mit dem Database Migration Service zu AlloyDB migrieren. Wenn Sie aus der exportierten Datei eine neue Instanz erstellen möchten, können Sie stattdessen auch einen Cluster aus einer gespeicherten Sicherung wiederherstellen.

Sie können den Export von Daten aus AlloyDB for PostgreSQL-Clustern abbrechen. Weitere Informationen finden Sie unter Export von Daten abbrechen.

Hinweis

  • Exportvorgänge verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.
  • Es fallen Gebühren für die interregionale Datenübertragung an, wenn sich der Ziel-Bucket in einer anderen Region als der Quellcluster befindet. Weitere Informationen finden Sie unter AlloyDB for PostgreSQL – Preise.
  • Die Komprimierung ist aktiviert, wenn der Objektname auf die Erweiterung .gz endet. Das Objekt wird dann im Format .gz in Cloud Storage exportiert.
  • Mehrere Exportvorgänge können parallel ausgeführt werden.

Erforderliche Rollen und Berechtigungen für Exporte aus AlloyDB

Damit Daten aus AlloyDB in Cloud Storage exportiert werden können, muss der Nutzer, der den Export initiiert, eine der folgenden Identity and Access Management-Rollen (IAM) haben:

Darüber hinaus muss das Dienstkonto für den AlloyDB-Cluster eine der folgenden Rollen für den Cloud Storage-Bucket haben:

  • Die IAM-Rolle storage.objectAdmin oder storage.objectCreator
  • Eine benutzerdefinierte Rolle mit der Berechtigung storage.objects.create

Informationen zu IAM-Rollen finden Sie unter Identity and Access Management.

AlloyDB-Daten in eine SQL-Dumpdatei exportieren

Wenn Sie mit AlloyDB einen Export in der gcloud CLI oder der API ausführen, verwenden Sie das pg_dump Dienstprogramm mit den Optionen, die erforderlich sind, damit die ausgegebene Exportdatei in AlloyDB importiert werden kann.

So exportieren Sie Daten aus einer Datenbank in einem AlloyDB-Cluster in eine SQL-Dumpdatei in einem Cloud Storage-Bucket:

gcloud

  1. Prüfen Sie, ob ein Cloud Storage-Bucket zum Speichern der exportierten Datei vorhanden ist, oder erstellen Sie einen neuen Bucket.
  2. Verwenden Sie das angegebene Format, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren. Das Format für das Dienstkonto ist wie folgt:

    service-PROJECT_NUMBER@gcp-sa-alloydb.

    Gewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang.

  3. Weisen Sie dem Dienstkonto mit gcloud storage buckets add-iam-policy-binding die storage.objectAdmin IAM-Rolle zu. Eine Anleitung zum Zuweisen von Rollen für Buckets, finden Sie unter IAM-Richtlinien für Buckets festlegen und verwalten.

    Wenn Sie die Datei in einen vorhandenen Cloud Storage-Bucket exportieren, den Sie nicht erstellt haben, benötigen Sie möglicherweise zusätzliche IAM-Berechtigungen, um Rollen für den Bucket zuzuweisen. Weitere Informationen finden Sie unter Erforderliche Rollen.

  4. Exportieren Sie die Datenbank in Ihren Cloud Storage-Bucket. Im Folgenden finden Sie Optionen zum Exportieren von Daten im SQL-Dumpformat:

    • --async (optional): wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.
    • --tables (optional): Tabellen, aus denen exportiert werden soll.
    • --schema-only (optional): Wenn festgelegt, wird nur das Schema exportiert.
    • --clean-target-objects (optional): Wenn festgelegt, werden Befehle ausgegeben, um alle gesicherten Datenbankobjekte zu DROPpen, bevor die Befehle zum Erstellen ausgegeben werden.
    • --if-exist-target-objects (optional): Wenn festgelegt, werden DROP ... IF EXISTS-Befehle verwendet, um zu prüfen, ob das Objekt vorhanden ist, bevor es im Modus --clean-target-objects gelöscht wird.

    Wenn Sie diese Funktionen verwenden möchten, fügen Sie diese Optionen in den gcloud-Befehl ein. Wenn Sie nur Objektdefinitionen (Schema) und keine Daten exportieren möchten, verwenden Sie das Flag –-schema-only. Mit dem Flag --tables=TABLE_NAMES geben Sie an, welche Tabellen exportiert werden sollen. Sie können durch Kommas getrennte Werte für Tabellennamen oder Platzhaltermuster angeben, um mehrere Tabellen festzulegen.

    Andernfalls entfernen Sie diese Parameter aus dem folgenden Befehl:

    gcloud alloydb clusters export CLUSTER_NAME
      --region=REGION
      --database=DATABASE_NAME
      --gcs-uri="gs://BUCKET_NAME/OBJECT_NAME"
      --tables=TABLE_NAMES
      --schema-only
      --clean-target-objects
      --if-exist-target-objects
      --sql

    Der Befehl alloydb clusters export enthält zwar Ansichten, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie das pg_dump Dienstprogramm, um Trigger oder gespeicherte Prozeduren zu exportieren.

    Weitere Informationen zur Verwendung des alloydb clusters export Befehls, finden Sie auf der alloydb clusters export Befehlsreferenzseite.

  5. Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie sie jetzt.

REST Version 1

  1. Prüfen Sie, ob ein Cloud Storage-Bucket zum Speichern der exportierten Datei vorhanden ist, oder erstellen Sie einen neuen Bucket:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
  2. Verwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren.

    Das Format für das Dienstkonto ist wie folgt:

     service-PROJECT_NUMBER@gcp-sa-alloydb.

    Gewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang.

  3. Weisen Sie dem Dienstkonto mit gcloud storage buckets add-iam-policy-binding die storage.objectAdmin IAM-Rolle zu. Eine Anleitung zum Zuweisen von Rollen für Buckets, finden Sie unter IAM-Richtlinien für Buckets festlegen und verwalten.

    Wenn Sie die Datei in einen vorhandenen Cloud Storage-Bucket exportieren, den Sie nicht erstellt haben, benötigen Sie möglicherweise zusätzliche IAM-Berechtigungen, um Rollen für den Bucket zuzuweisen. Weitere Informationen finden Sie unter Erforderliche Rollen.

  4. Exportieren Sie Ihre Datenbank.

    Verwenden Sie die folgende HTTP-Methode und URL:

    POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export

    Ersetzen Sie folgende Werte in den Anfragedaten:

    • PROJECT_ID: Projekt-ID.
    • REGION: Die Region, in der der AlloyDB-Cluster bereitgestellt wird.
    • CLUSTER_ID: Cluster-ID.
    • BUCKET_NAME: Name des Cloud Storage-Bucket.
    • PATH_TO_SQL_FILE: Pfad zur SQL-Dumpdatei.
    • DATABASE_NAME: Name einer Datenbank in der AlloyDB-Instanz.
    • TABLES: Tabellen, aus denen exportiert werden soll.
    • SCHEMA_ONLY: Wenn true, wird nur das Schema exportiert.
    • CLEAN_TARGET_OBJECTS: Wenn true, werden Befehle ausgegeben, um DROP alle gesicherten Datenbankobjekte zu droppen, bevor die Befehle zum Erstellen ausgegeben werden.
    • IF_EXIST_TARGET_OBJECTS: Wenn true, werden DROP ... IF EXISTS Befehle verwendet, um zu prüfen, ob das Objekt vorhanden ist bevor es im Modus clean_target_objects gelöscht wird.

    Wenn Sie diese Funktionen verwenden möchten, legen Sie die Werte dieser Parameter auf true fest. Andernfalls legen Sie die Werte auf false fest. Wenn Sie nur Objektdefinitionen (Schema) und keine Daten exportieren möchten, verwenden Sie das Flag schema_only. Mit dem Feld tables geben Sie an, welche Tabellen exportiert werden sollen. Sie können mehrere Tabellen auswählen, indem Sie eine durch Kommas getrennte Liste von Tabellennamen angeben oder Platzhalterzeichen im Muster verwenden.

    JSON-Text der Anfrage:

    {
      "gcs_destination": {
        "uri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE"
      },
      "database": "DATABASE_NAME",
      "sql_export_options": {
        "schema_only": true,
        "tables": [
         "TABLE1",
         "TABLE2"
        ],
        "clean_target_objects": false,
        "if_exist_target_objects": true
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    curl (Linux, macOS oder Cloud Shell)

    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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"
       

    PowerShell (Windows)

    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/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export"| Select-Object -Expand Content
       

    Sie erhalten eine JSON-Antwort ähnlich der folgenden:

    Antwort

    {
      "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
        "createTime": "2024-09-17T06:05:31.244428646Z",
        "target": "projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID",
        "verb": "export",
        "requestedCancellation": false,
        "apiVersion": "v1"
      },
      "done": false
    }
    
  5. Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie sie jetzt.

Die vollständige Liste der Parameter für die Anfrage finden Sie unter clusters:export.

Nächste Schritte