Questa pagina descrive come esportare i dati dai cluster AlloyDB per PostgreSQL in file di dump SQL.
Per informazioni su come eseguire la migrazione di un intero database da un database supportato a una nuova istanza AlloyDB, consulta Eseguire la migrazione di un database ad AlloyDB utilizzando Database Migration Service. Se esegui l'esportazione perché vuoi creare una nuova istanza dal file esportato, ti consigliamo 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 di database standard, a meno che l'istanza non sia sottodimensionata.
- I costi di trasferimento dati tra regioni si applicano quando il bucket di destinazione si trova in una regione diversa rispetto al cluster di origine. Per ulteriori informazioni, consulta Prezzi di AlloyDB per PostgreSQL.
- La compressione è attivata se il nome dell'oggetto termina con l'estensione
.gz
. L'oggetto viene poi esportato in formato.gz
in 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 di Identity and Access Management (IAM):
- Il ruolo
Cloud AlloyDB Admin
(
roles/alloydb.admin
) - Un ruolo personalizzato, che include le seguenti autorizzazioni:
alloydb.clusters.get
alloydb.clusters.export
Inoltre, l'account di servizio per il cluster AlloyDB deve avere uno dei seguenti ruoli:
- Il ruolo IAM
storage.objectAdmin
- Un ruolo personalizzato, incluse le autorizzazioni
storage.objects.create
Per assistenza sui 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, dall'interfaccia a riga di comando gcloud o dall'API, utilizzi l'utilità pg_dump
con le opzioni necessarie per garantire che il file di esportazione risultante sia valido per l'importazione 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 l'account di servizio del progetto da cui stai eseguendo l'esportazione. Il formato dell'account di servizio è il seguente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Concedi le autorizzazioni del account di servizio al bucket Cloud Storage per l'operazione di esportazione.
Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectAdmin
ruolo IAM all'account di servizio. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.Esporta il database nel tuo bucket Cloud Storage. Di seguito sono elencate le opzioni per esportare i dati in un formato di dump SQL:
--async
(Facoltativo): torna immediatamente senza attendere il completamento dell'operazione in corso.--tables
(Facoltativo): le tabelle da cui eseguire l'esportazione.--schema-only
(Facoltativo): se impostato, esporta solo lo schema.--clean-target-objects
(Facoltativo): se impostato, emette i comandi suDROP
per tutti gli oggetti del database sottoposti a dump prima di emettere i comandi per crearli.--if-exist-target-objects
(Facoltativo): se impostato, utilizza i comandiDROP ... IF EXISTS
per verificare l'esistenza dell'oggetto prima di inserirlo 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 di nomi di tabelle o pattern di 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 --sql
Il comando
alloydb clusters export
non contiene trigger o procedure memorizzate, ma contiene visualizzazioni. Per esportare gli attivatori o le procedure memorizzate, utilizza l'utilitàpg_dump
.Per ulteriori informazioni sull'utilizzo del comando
alloydb clusters export
, consulta la pagina di riferimento del comandoalloydb clusters export
.Se non devi conservare il ruolo IAM 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_NAME
Utilizza il formato dell'account di servizio per identificare l'account di servizio del progetto da cui stai eseguendo l'esportazione.
Il formato dell'account di servizio è il seguente:
service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
Concedi le autorizzazioni dell'account di servizio al bucket Cloud Storage per l'operazione di esportazione.
Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectAdmin
ruolo IAM all'account di servizio. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.Esporta il database.
Utilizza il seguente metodo e URL HTTP:
POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID:export
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto.
- REGION: la regione in cui è dipiegato il 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: le tabelle da cui eseguire l'esportazione.
- SCHEMA_ONLY: se
true
, esporta solo lo schema. - CLEAN_TARGET_OBJECTS: se
true
, emette comandi perDROP
tutti gli oggetti del database sottoposti a dump prima di emettere i comandi per crearli. - IF_EXIST_TARGET_OBJECTS: se
true
, utilizza i comandiDROP ... IF EXISTS
per verificare l'esistenza dell'oggetto prima di inserirlo 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 separato da virgole dei nomi delle tabelle 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.json
esegui il seguente comando: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.json
esegui il seguente comando:$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
Riceverai 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 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.
- Annullare un'esportazione dei dati.