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 Datenbankserver zu einer neuen AlloyDB-Instanz finden Sie unter Datenbank mit 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.

Hinweise

  • Beachten Sie vor Beginn eines Exportvorgangs, dass Exportvorgänge Datenbankressourcen verwenden, den normalen Datenbankbetrieb jedoch nicht beeinträchtigen, es sei denn, die Instanz ist unterdimensioniert.
  • Kosten für die interregionale Datenübertragung fallen 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 .gz-Format nach Cloud Storage exportiert.
  • Es können mehrere Exportvorgänge parallel ausgeführt werden.

Erforderliche Rollen und Berechtigungen für den Export aus AlloyDB

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

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

  • storage.objectAdmin IAM-Rolle.
  • Eine benutzerdefinierte Rolle mit den Berechtigungen 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 über die gcloud-Befehlszeile oder die API ausführen, verwenden Sie das Dienstprogramm pg_dump mit den Optionen, die erforderlich sind, damit die resultierende 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. Cloud Storage-Bucket erstellen
  2. Geben Sie das Dienstkonto für das Projekt an, aus dem Sie exportieren. Verwenden Sie dabei das angegebene Format. Das Dienstkonto hat folgendes Format:

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Weisen Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang zu.

  3. Verwenden Sie gcloud storage buckets add-iam-policy-binding, um dem Dienstkonto die storage.objectAdmin-IAM-Rolle zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.

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

    • --async (optional): Gibt sofort zurück, ohne auf den Abschluss des Vorgangs zu warten.
    • --tables (optional): Tabellen, aus denen exportiert werden soll.
    • --schema-only (Optional): Wenn diese Option festgelegt ist, wird nur das Schema exportiert.
    • --clean-target-objects (Optional): Wenn diese Option festgelegt ist, werden die Befehle zum Erstellen der Datenbankobjekte erst nach dem Ausgeben der Befehle zum Dumpen ausgegeben.DROP
    • --if-exist-target-objects (Optional): Wenn diese Option festgelegt ist, können Sie mit DROP ... IF EXISTS-Befehlen prüfen, ob das Objekt vorhanden ist, bevor Sie es im --clean-target-objects-Modus ablegen.

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

    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

    Mit dem Befehl alloydb clusters export werden zwar Ansichten exportiert, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie das Dienstprogramm pg_dump, um Trigger oder gespeicherte Prozeduren zu exportieren.

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

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

REST Version 1

  1. Erstellen Sie einen Bucket für den Export:

    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 anzugeben, aus dem Sie exportieren.

    Das Dienstkonto hat folgendes Format:

     service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    Weisen Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang zu.

  3. Verwenden Sie gcloud storage buckets add-iam-policy-binding, um dem Dienstkonto die storage.objectAdmin-IAM-Rolle zuzuweisen. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.

  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 diese Werte in den folgenden Anweisungen:

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

    Wenn Sie diese Funktionen verwenden möchten, müssen Sie die Werte dieser Parameter auf true festlegen. Andernfalls setzen Sie die Werte auf false. Wenn Sie nur Objektdefinitionen (Schema) und keine Daten exportieren möchten, verwenden Sie das Flag schema_only. Verwenden Sie das Feld tables, um anzugeben, welche Tabellen exportiert werden sollen. Sie können mehrere Tabellen auswählen, indem Sie eine durch Kommas getrennte Liste von Tabellennamen angeben oder Platzhalter in das Muster einfügen.

    JSON-Text anfordern:

    {
      "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, die in etwa so aussieht:

    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