Wenn Sie Datenbankschemas und Daten als Nur-Text-Skript mit SQL-Anweisungen sichern möchten, können Sie Daten aus AlloyDB for PostgreSQL-Clustern in eine SQL-Dumpdatei in einem Cloud Storage-Bucket 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 Exportvorgang abbrechen.
Hinweis
- Beachten Sie vor dem Starten eines Exportvorgangs, dass Exportvorgänge Datenbankressourcen verwenden, aber den normalen Datenbankbetrieb nicht beeinträchtigen, es sei denn, die Instanz ist unterdimensioniert.
- 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 auf die 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 IAM-Rollen (Identity and Access Management) haben:
- Die Rolle AlloyDB Admin (
roles/alloydb.admin) - Eine benutzerdefinierte Rolle mit folgenden Berechtigungen:
alloydb.clusters.getalloydb.clusters.export
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.objectAdminoderstorage.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 über die gcloud CLI oder die API ausführen, verwenden Sie das Dienstprogramm pg_dump 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
- Prüfen Sie, ob ein Cloud Storage-Bucket zum Speichern der exportierten Datei vorhanden ist, oder erstellen Sie einen neuen Bucket.
Weisen Sie mit
gcloud storage buckets add-iam-policy-bindingdem AlloyDB-Dienstkonto für den Bucket die IAM-Rollestorage.objectAdminzu. Das Format für das Dienstkonto sieht so aus:service-PROJECT_NUMBER@gcp-sa-alloydb.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.
Exportieren Sie die Datenbank in Ihren Cloud Storage-Bucket. Im Folgenden sind Optionen zum Exportieren von Daten im SQL-Dumpformat aufgeführt:
--async(optional): Sofort zurückkehren, ohne auf den Abschluss des laufenden 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 zumDROPaller gesicherten Datenbankobjekte ausgegeben, bevor die Befehle zum Erstellen der Objekte ausgegeben werden.--if-exist-target-objects(optional): Wenn festgelegt, werdenDROP ... IF EXISTS-Befehle verwendet, um zu prüfen, ob das Objekt vorhanden ist, bevor es im--clean-target-objects-Modus gelöscht wird.
Wenn Sie diese Funktionen verwenden möchten, fügen Sie diese Optionen in den Befehl
gcloudein. 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 CSV-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 \ --sqlMit dem Befehl
gcloud alloydb clusters exportwerden zwar Ansichten exportiert, jedoch keine Trigger oder gespeicherten Prozeduren. Verwenden Sie zum Exportieren von Triggern oder gespeicherten Prozeduren das Dienstprogrammpg_dump.Weitere Informationen zur Verwendung des Befehls
gcloud alloydb clusters exportfinden Sie auf der Referenzseite für den Befehlgcloud alloydb clusters export.Wenn Sie die zuvor festgelegte IAM-Rolle nicht beibehalten möchten, heben Sie die Rolle auf.
REST Version 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_NAMEWeisen Sie mit
gcloud storage buckets add-iam-policy-bindingdem AlloyDB-Dienstkonto für den Bucket die IAM-Rollestorage.objectAdminzu. Das Format für das Dienstkonto sieht so aus:service-PROJECT_NUMBER@gcp-sa-alloydb.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.
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: 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 zumDROPaller gesicherten Datenbankobjekte ausgegeben, bevor die Befehle zum Erstellen der Objekte ausgegeben werden. - IF_EXIST_TARGET_OBJECTS: Wenn
true, verwenden SieDROP ... IF EXISTS-Befehle, um zu prüfen, ob das Objekt vorhanden ist, bevor Sie es imclean_target_objects-Modus löschen.
Wenn Sie diese Funktionen verwenden möchten, setzen Sie die Werte dieser Parameter auf
true. Andernfalls legen Sie die Werte auffalsefest. Wenn Sie nur Objektdefinitionen (Schema) und keine Daten exportieren möchten, verwenden Sie das Flagschema_only. Mit dem Feldtableskönnen Sie angeben, welche Tabellen exportiert werden sollen. Sie können mehrere Tabellen auswählen, indem Sie eine durch Kommas getrennte Liste von Tabellennamen angeben oder Platzhalterzeichen in das Muster einfügen.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 wie diese:
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.
Die vollständige Liste der Parameter für die Anfrage finden Sie unter clusters.export.