Questa pagina descrive come esportare i dati dai cluster AlloyDB per PostgreSQL in file di dump SQL.
Per informazioni sulla migrazione di un intero database da un server di database supportato a una nuova istanza AlloyDB, consulta Eseguire la migrazione di un database ad AlloyDB utilizzando Database Migration Service. Se stai eseguendo l'esportazione perché vuoi creare una nuova istanza dal file esportato, valuta la possibilità di ripristinare un cluster da un backup archiviato.
Puoi annullare l'esportazione dei dati dai cluster AlloyDB per PostgreSQL. Per ulteriori informazioni, consulta Annullare l'esportazione dei dati.
Prima di iniziare
- Prima di iniziare un'operazione di esportazione, tieni presente che le operazioni di esportazione utilizzano le risorse del database, ma non interferiscono con le operazioni standard del database, a meno che l'istanza non sia sottoprovvisionata.
- I costi di trasferimento dei dati tra regioni si applicano quando il bucket di destinazione si trova in una regione diversa dal cluster di origine. Per ulteriori informazioni, consulta i prezzi di AlloyDB per PostgreSQL.
- La compressione è abilitata se il nome dell'oggetto termina con l'estensione
.gz. L'oggetto viene quindi esportato in formato.gzin Cloud Storage. - È possibile eseguire più operazioni di esportazione in parallelo.
Ruoli e autorizzazioni richiesti per l'esportazione da AlloyDB
Per esportare i dati da AlloyDB in Cloud Storage, l'utente che avvia l'esportazione deve disporre di uno dei seguenti ruoli Identity and Access Management (IAM):
- Il ruolo
Cloud AlloyDB Admin
(
roles/alloydb.admin) - Un ruolo personalizzato, incluse le
seguenti autorizzazioni:
alloydb.clusters.getalloydb.clusters.export
Inoltre, il account di servizio per il cluster AlloyDB deve disporre di uno dei seguenti ruoli:
- Il ruolo IAM
storage.objectAdmin - Un ruolo personalizzato, incluse le autorizzazioni
storage.objects.create
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Esportare i dati di AlloyDB in un file di dump SQL
Quando utilizzi AlloyDB per eseguire un'esportazione, sia dall'
interfaccia a riga di comando gcloud che dall'API, utilizzi l'
pg_dump
utilità, con le opzioni necessarie per garantire che il file di esportazione risultante sia
valido per l'importazione di nuovo in AlloyDB.
Per esportare i dati da un database su un cluster AlloyDB in un file di dump SQL in un bucket Cloud Storage, segui questi passaggi:
gcloud
- Crea un bucket Cloud Storage.
Utilizza il formato fornito per identificare il account di servizio per il progetto da cui stai esportando. Il formato del account di servizio è il seguente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comConcedi al account di servizio le autorizzazioni per il bucket Cloud Storage per l'operazione di esportazione.
Utilizza
gcloud storage buckets add-iam-policy-bindingper concedere ilstorage.objectAdminruolo IAM al account di servizio. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.Esporta il database nel bucket Cloud Storage. Di seguito sono elencate le opzioni per l'esportazione dei dati in formato dump SQL:
--async(facoltativo): restituisce immediatamente, senza attendere il completamento dell'operazione in corso.--tables(facoltativo): tabelle da cui esportare.--schema-only(facoltativo): se impostato, esporta solo lo schema.--clean-target-objects(facoltativo): se impostato, genera comandi perDROPtutti gli oggetti del database di cui è stato eseguito il dump prima di generare i comandi per la loro creazione.--if-exist-target-objects(facoltativo): se impostato, utilizza i comandiDROP ... IF EXISTSper verificare l'esistenza dell'oggetto prima di eliminarlo in modalità--clean-target-objects.
Per utilizzare queste funzionalità, includi queste opzioni nel comando
gcloud. Se vuoi esportare solo le definizioni degli oggetti (schema) e nessun dato, utilizza il flag–-schema-only. Per specificare le tabelle da esportare, utilizza il flag--tables=TABLE_NAMES. Puoi specificare valori separati da virgole dei nomi delle tabelle o pattern con caratteri jolly per specificare più tabelle.In caso contrario, rimuovi questi parametri dal seguente comando:
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 --sqlIl comando
alloydb clusters exportnon contiene trigger o stored procedure, ma contiene viste. Per esportare trigger o stored procedure, utilizza l'pg_dumputility.Per ulteriori informazioni sull'utilizzo del comando
alloydb clusters export, consulta laalloydb clusters exportpagina di riferimento del comando.Se non devi conservare il ruolo IAM che hai impostato in precedenza, revoca il ruolo ora.
REST v1
Crea un bucket per l'esportazione:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUtilizza il formato del account di servizio per identificare il account di servizio per il progetto da cui stai esportando.
Il formato del account di servizio è il seguente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comConcedi al account di servizio le autorizzazioni per il bucket Cloud Storage per l'operazione di esportazione.
Utilizza
gcloud storage buckets add-iam-policy-bindingper concedere ilstorage.objectAdminruolo IAM al account di servizio. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.Esporta il database.
Utilizza il seguente metodo HTTP e URL:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:exportPrima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:
- PROJECT_ID: l'ID progetto
- REGION: la regione in cui è stato eseguito il deployment del cluster AlloyDB.
- CLUSTER_ID: l'ID cluster.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_SQL_FILE: il percorso del file di dump SQL.
- DATABASE_NAME: il nome di un database all'interno dell'istanza AlloyDB.
- TABLES: tabelle da cui esportare.
- SCHEMA_ONLY: se
true, esporta solo lo schema. - CLEAN_TARGET_OBJECTS: se
true, genera comandi perDROPtutti gli oggetti del database di cui è stato eseguito il dump prima di generare i comandi per la loro creazione. - IF_EXIST_TARGET_OBJECTS: se
true, utilizzaDROP ... IF EXISTScomandi per verificare l'esistenza dell'oggetto prima di eliminarlo in modalitàclean_target_objects.
Per utilizzare queste funzionalità, imposta i valori di questi parametri su
true. In caso contrario, imposta i valori sufalse. Se vuoi esportare solo le definizioni degli oggetti (schema) e nessun dato, utilizza il flagschema_only. Per specificare le tabelle da esportare, utilizza il campotables. Puoi selezionare più tabelle fornendo un elenco di nomi di tabelle separati da virgole o scrivendo caratteri jolly nel pattern.Corpo JSON della richiesta:
{ "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 } }Per inviare la richiesta, espandi una di queste opzioni:
curl (Linux, macOS o Cloud Shell)
Salva il corpo della richiesta in un file denominato
request.jsoned esegui il comando seguente: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)
Salva il corpo della richiesta in un file denominato
request.jsoned esegui il comando seguente:$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 ContentRiceverai una risposta JSON simile alla seguente:
Risposta
{ "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 }Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, consulta
clusters:export.
Passaggi successivi
- Scopri come esportare un file CSV.
- Annulla un'esportazione di dati.