Per eseguire il backup degli schemi e dei dati del database come script di testo normale di istruzioni SQL, puoi esportare i dati dai cluster AlloyDB per PostgreSQL in un file di dump SQL in un bucket Cloud Storage.
Per informazioni sulla migrazione di un intero database da un server di database supportato a una nuova istanza AlloyDB, consulta Esegui 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 saperne di più, consulta Annulla un'operazione di esportazione.
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 sottoposta a provisioning insufficiente.
- I costi di trasferimento di 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 è 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 AlloyDB Admin (
roles/alloydb.admin) - Un ruolo personalizzato, che include le seguenti autorizzazioni:
alloydb.clusters.getalloydb.clusters.export
Inoltre, il account di servizio del cluster AlloyDB deve avere uno dei seguenti ruoli nel bucket Cloud Storage:
- Il ruolo IAM
storage.objectAdminostorage.objectCreator - Un ruolo personalizzato, inclusa l'autorizzazione
storage.objects.create
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Esporta i dati di AlloyDB in un file di dump SQL
Quando utilizzi AlloyDB per eseguire un'esportazione, sia da gcloud CLI che 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 in un cluster AlloyDB in un file di dump SQL in un bucket Cloud Storage, segui questi passaggi:
gcloud
- Assicurati che esista un bucket Cloud Storage per archiviare il file esportato o crea un nuovo bucket.
Utilizza
gcloud storage buckets add-iam-policy-bindingper concedere ilstorage.objectAdminruolo IAM al account di servizio AlloyDB per il bucket. Il formato del account di servizio è il seguente:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPer istruzioni sulla concessione di ruoli sui bucket, consulta Imposta e gestisci le policy IAM sui bucket.
Se esporti il file in un bucket Cloud Storage esistente che non hai creato, potresti aver bisogno di autorizzazioni IAM aggiuntive per concedere i ruoli nel bucket. Per i dettagli, consulta Ruoli richiesti.
Esporta il database nel bucket Cloud Storage. Di seguito sono elencate le opzioni per l'esportazione dei dati in un formato di dump SQL:
--async(facoltativo): termina immediatamente, senza attendere il completamento dell'operazione in corso.--tables(facoltativo): tabelle da cui esportare i dati.--schema-only(facoltativo): se impostato, esporta solo lo schema.--clean-target-objects(facoltativo): se impostato, genera i comandi perDROPtutti gli oggetti del database di cui è stato eseguito il dump prima di generare i comandi per crearli.--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 di nomi di 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
gcloud alloydb clusters exportnon contiene trigger o stored procedure, ma contiene viste. Per esportare trigger o stored procedure, utilizza l'utilitàpg_dump.Per saperne di più sull'utilizzo del comando
gcloud alloydb clusters export, consulta la pagina di riferimento del comandogcloud alloydb clusters export.Se non hai bisogno di conservare il ruolo IAM impostato in precedenza, revocalo.
REST v1
Assicurati che esista un bucket Cloud Storage per archiviare il file esportato o crea un nuovo bucket:
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAMEUtilizza
gcloud storage buckets add-iam-policy-bindingper concedere ilstorage.objectAdminruolo IAM al account di servizio AlloyDB per il bucket. Il formato del account di servizio è il seguente:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.comPer istruzioni sulla concessione di ruoli sui bucket, consulta Imposta e gestisci le policy IAM sui bucket.
Se esporti il file in un bucket Cloud Storage esistente che non hai creato, potresti aver bisogno di autorizzazioni IAM aggiuntive per concedere i ruoli nel bucket. Per i dettagli, consulta Ruoli richiesti.
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 seguenti sostituzioni:
- 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: le tabelle da cui esportare i dati.
- 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 crearli. - IF_EXIST_TARGET_OBJECTS: Se
true, utilizzoDROP ... IF EXISTScomandi per verificare l'esistenza dell'oggetto prima di rilasciarloclean_target_objectsmodalità.
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 di nomi di 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.jsoned esegui questo 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.jsoned esegui questo 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 ContentRicevi 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 hai bisogno di conservare il ruolo IAM impostato in precedenza, rimuovilo.
Per l'elenco completo dei parametri della richiesta, consulta
clusters.export.
Passaggi successivi
- Scopri come esportare un file CSV.
- Annulla un'esportazione dei dati.