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 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 Datenexport abbrechen.
Hinweis
- Bevor Sie einen Exportvorgang starten, sollten Sie Folgendes beachten: Exportvorgänge verwenden Datenbankressourcen, stören den normalen Datenbankbetrieb jedoch nicht, wenn die Instanz nicht unterdimensioniert ist.
- Gebühren 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 mit der Erweiterung
.gzendet. 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 die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) haben:
- Die Rolle Cloud AlloyDB-Administrator (
roles/alloydb.admin) - Eine benutzerdefinierte Rolle mit den folgenden Berechtigungen:
alloydb.clusters.getalloydb.clusters.export
Außerdem muss das Dienstkonto für den AlloyDB-Cluster eine der folgenden Rollen haben:
storage.objectAdminIAM-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 CLI 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
- Cloud Storage-Bucket erstellen
Verwenden Sie das angegebene Format, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren. Das Dienstkonto hat das folgende Format:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comGewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang.
Weisen Sie mit
gcloud storage buckets add-iam-policy-bindingdie IAM-Rollestorage.objectAdmindem Dienstkonto zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.Exportieren Sie die Datenbank in Ihren Cloud Storage-Bucket. In den folgenden Listen finden Sie Optionen zum Exportieren von Daten im SQL-Dumpformat:
--async(Optional): Gibt die Steuerung sofort zurück, 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 diese Option festgelegt ist, werden die Befehle für alle gesicherten Datenbankobjekte inDROPausgegeben, bevor die Befehle zum Erstellen der Objekte ausgegeben werden.--if-exist-target-objects(optional): Wenn festgelegt, verwenden SieDROP ... IF EXISTS-Befehle, um vor dem Ablegen im--clean-target-objects-Modus zu prüfen, ob das Objekt vorhanden ist.
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_NAMESkönnen Sie angeben, welche Tabellen exportiert werden sollen. Sie können mehrere Tabellen angeben, indem Sie durch Kommas getrennte Werte von Tabellennamen oder Platzhaltermuster verwenden.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 --sqlMit dem Befehl
alloydb clusters exportwerden zwar Ansichten exportiert, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie das Dienstprogrammpg_dump, um Trigger oder gespeicherte Prozeduren zu exportieren.Weitere Informationen zur Verwendung des Befehls
alloydb clusters exportfinden Sie auf der Referenzseite des Befehlsalloydb clusters export.Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, entfernen Sie sie jetzt.
REST Version 1
Erstellen Sie einen Bucket für den Export:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEVerwenden Sie das Dienstkontoformat, um das Dienstkonto für das Projekt zu identifizieren, aus dem Sie exportieren.
Das Dienstkonto hat das folgende Format:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comGewähren Sie dem Dienstkonto Berechtigungen für den Cloud Storage-Bucket für den Exportvorgang.
Weisen Sie mit
gcloud storage buckets add-iam-policy-bindingdie IAM-Rollestorage.objectAdmindem Dienstkonto zu. Weitere Informationen zum Festlegen von IAM-Berechtigungen finden Sie unter IAM-Berechtigungen verwenden.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:exportErsetzen Sie folgende Werte in den Anfragedaten:
- PROJECT_ID: Projekt-ID.
- REGION: Die Region, in der der AlloyDB-Cluster bereitgestellt wird.
- CLUSTER_ID: Die Cluster-ID.
- BUCKET_NAME: der Name des Cloud Storage-Bucket.
- PATH_TO_SQL_FILE: der Pfad zur SQL-Dumpdatei.
- DATABASE_NAME: Der 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 die Ausgabebefehle fürDROPfür alle gesicherten Datenbankobjekte ausgegeben, bevor die Befehle zum Erstellen der Objekte ausgegeben werden. - IF_EXIST_TARGET_OBJECTS: Wenn
true, verwenden SieDROP ... IF EXISTS-Befehle, um vor dem Ablegen imclean_target_objects-Modus zu prüfen, ob das Objekt vorhanden ist.
Wenn Sie diese Funktionen verwenden möchten, legen Sie die Werte dieser Parameter auf
truefest. Setzen Sie ihre Werte andernfalls auffalse. Wenn Sie nur Objektdefinitionen (Schema) und keine Daten exportieren möchten, verwenden Sie das Flagschema_only. Verwenden Sie das Feldtables, um anzugeben, welche Tabellen exportiert werden sollen. Sie können mehrere Tabellen auswählen, indem Sie eine durch Kommas getrennte Liste mit 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.jsonund 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.jsonund 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 ContentSie 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 }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.