Questa pagina descrive l'esportazione e l'importazione parallela di file nelle istanze Cloud SQL.
Prima di iniziare
Prima di iniziare un'operazione di esportazione o importazione:
- Assicurati che il database disponga di spazio libero sufficiente.
- Segui le best practice per l'esportazione e l'importazione dei dati.
- Dopo aver completato un'operazione di importazione, verifica i risultati.
Le operazioni di esportazione e importazione utilizzano le risorse del database, ma non interferiscono con le operazioni tipiche del database, a meno che il provisioning dell'istanza non sia insufficiente.
Esporta i dati da Cloud SQL per PostgreSQL in più file in parallelo
Le sezioni seguenti contengono informazioni sull'esportazione parallela di dati da Cloud SQL per PostgreSQL in più file.
Ruoli e autorizzazioni richiesti per l'esportazione parallela dei dati da Cloud SQL per PostgreSQL in più file
Per esportare i dati da Cloud SQL in Cloud Storage, l'utente che avvia l'esportazione deve disporre di uno dei seguenti ruoli:
- Il ruolo Editor Cloud SQL
- Un ruolo personalizzato,
incluse le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.export
Inoltre, il account di servizio dell'istanza Cloud SQL deve avere uno dei seguenti ruoli:
- Il ruolo
storage.objectAdmin
Identity and Access Management (IAM) - Un ruolo personalizzato, incluse le seguenti autorizzazioni:
storage.objects.create
storage.objects.list
(solo per l'esportazione parallela dei file)storage.objects.delete
(solo per l'esportazione parallela dei file)
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Esportare i dati in più file in parallelo
Puoi esportare i dati in parallelo da più file che si trovano in Cloud SQL a Cloud Storage. Per farlo, utilizza l'utilitàpg_dump
con l'opzione --jobs
.
Se prevedi di importare i dati in Cloud SQL, segui le istruzioni fornite in Esportazione dei dati da un server di database esterno in modo che i file siano formattati correttamente per Cloud SQL.
gcloud
Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:
- Crea un bucket Cloud Storage.
- Per trovare il account di servizio dell'istanza Cloud SQL da cui stai esportando i file, utilizza il comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Per concedere il ruolo IAM
storage.objectAdmin
all'account di servizio, utilizza il comandogcloud storage buckets add-iam-policy-binding
. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Per esportare i dati da Cloud SQL in più file in parallelo, utilizza il comando
gcloud sql export sql
:gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME \ --table=TABLE_EXPRESSION
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui esporti i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di esportazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di esportazione.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per esportare i file in parallelo. Ad esempio, se vuoi esportare tre file alla volta in parallelo, specifica
3
come valore per questo parametro. - DATABASE_NAME (facoltativo): il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'esportazione. Se non specifichi un database, Cloud SQL esporta tutti i database utente dall'istanza. Per saperne di più, consulta Esportare un'intera istanza.
- TABLE_EXPRESSION: le tabelle da esportare dal database specificato.
Il comando
export sql
non contiene trigger o stored procedure, ma contiene viste. Per esportare trigger o stored procedure, utilizza un singolo thread per l'esportazione. Questo thread utilizza lo strumentopg_dump
.Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato della directory
pg_dump
. - Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revocalo.
Sostituisci INSTANCE_NAME con il nome della tua istanza Cloud SQL.
Nell'output, cerca il valore associato al campo serviceAccountEmailAddress
.
REST v1
Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:
- Crea un bucket Cloud Storage:
Esegui le seguenti sostituzioni:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
my-bucket
. - PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che stai creando.
- LOCATION_NAME: la posizione del bucket in cui vuoi archiviare i file che stai esportando. Ad esempio,
us-east1
.
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
- Fornisci alla tua istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. -
Esporta i dati da Cloud SQL in più file in parallelo:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui esporti i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di esportazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di esportazione.
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguita l'esportazione. Se vuoi esportare tutti i database utente dall'istanza, rimuovi questo campo dal corpo della richiesta.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per esportare i file in parallelo. Ad esempio, se vuoi esportare tre file alla volta in parallelo, specifica
3
come valore per questo parametro.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revocalo.
Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato della directory pg_dump
.
REST v1beta4
Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:
- Crea un bucket Cloud Storage:
Esegui le seguenti sostituzioni:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
my-bucket
. - PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che stai creando.
- LOCATION_NAME: la posizione del bucket in cui vuoi archiviare i file che stai esportando. Ad esempio,
us-east1
.
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
- Fornisci alla tua istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. -
Esporta i dati da Cloud SQL in più file in parallelo:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui esporti i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di esportazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di esportazione.
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguita l'esportazione. Se vuoi esportare tutti i database utente dall'istanza, rimuovi questo campo dal corpo della richiesta.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per esportare i file in parallelo. Ad esempio, se vuoi esportare tre file alla volta in parallelo, specifica
3
come valore per questo parametro.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlExportOptions": { "parallel": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revocalo.
Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato della directory pg_dump
.
Esportare e importare un'intera istanza
Puoi esportare o importare tutti i database utente in un'intera istanza utilizzando un'esportazione parallela formattata in directory.
Per esportare o importare un'intera istanza, utilizza gli stessi comandi mostrati nelle sezioni
Esportazione parallela e
Importazione parallela, rimuovendo il campo
databases
o database
, rispettivamente. Se non specifichi un database, Cloud SQL esegue un'esportazione o un'importazione parallela per tutti i database utente nell'istanza. Sono esclusi i database di sistema e
i database Cloud SQL utilizzati per gestire le operazioni interne.
In un'esportazione parallela in formato directory in Cloud Storage, una volta completata l'esportazione, i dati associati a ogni database vengono archiviati in una sottodirectory denominata per ogni database, in modo simile al seguente:
gs://example-bucket/test-folder/ |---- postgres/ | |---- 3929.dat.gz (table data file) | |---- toc.dat (metadata file) | |---- second_database/ | |---- 3930.dat.gz | |---- 3931.dat.gz | |---- toc.dat
Se vuoi eseguire un'importazione parallela per un'intera istanza e i file dell'istanza sono stati creati al di fuori di Cloud SQL, questa struttura di sottodirectory è necessaria per il completamento dell'operazione.
Quando viene rilevata l'intera struttura di dump dell'istanza, il database di importazione specificato nell'API viene ignorato. L'operazione rileva l'intera struttura dell'istanza dal nome della directory.
Non puoi eseguire l'esportazione o l'importazione di un'intera istanza per altri formati di file.
Non puoi esportare o importare un'intera istanza come singolo file SQL o CSV.
Importare dati da più file in parallelo in Cloud SQL per PostgreSQL
Le sezioni seguenti contengono informazioni sull'importazione parallela di dati da più file in Cloud SQL per PostgreSQL.
Ruoli e autorizzazioni richiesti per importare dati da più file in parallelo in Cloud SQL per PostgreSQL
Per importare i dati da Cloud Storage in Cloud SQL, l'utente che avvia l'importazione deve disporre di uno dei seguenti ruoli:
- Il ruolo Amministratore Cloud SQL
- Un ruolo personalizzato,
incluse le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.import
Inoltre, il account di servizio dell'istanza Cloud SQL deve avere uno dei seguenti ruoli:
- Ruolo IAM
storage.objectAdmin
- Un ruolo personalizzato, incluse le seguenti autorizzazioni:
storage.objects.get
storage.objects.list
(solo per l'importazione parallela dei file)
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Importa i dati in Cloud SQL per PostgreSQL
Puoi importare i dati in parallelo da più file che si trovano in Cloud Storage nel tuo database. Per farlo, utilizza l'utilità pg_restore
con l'opzione --jobs
.
gcloud
Per importare i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:
- Crea un bucket Cloud Storage.
Carica i file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.
- Per trovare il account di servizio dell'istanza Cloud SQL in cui importare i file, utilizza il comando
gcloud sql instances describe
.gcloud sql instances describe INSTANCE_NAME
- Per concedere il ruolo IAM
storage.objectAdmin
al account di servizio, utilizza l'utilitàgcloud storage buckets add-iam-policy-binding
. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Per importare in parallelo i dati da più file in Cloud SQL, utilizza il comando
gcloud sql import sql
:gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL in cui importi i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di importazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di importazione.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per importare i file in parallelo. Ad esempio, se vuoi importare tre file contemporaneamente in parallelo, specifica
3
come valore per questo parametro. - DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguito l'importazione. Devi specificare un solo database.
Se il comando restituisce un errore come
ERROR_RDBMS
, esamina le autorizzazioni. Questo errore è spesso dovuto a problemi di autorizzazioni. - Se non hai bisogno delle autorizzazioni IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per PostgreSQL, utilizza
gcloud storage buckets remove-iam-policy-binding
per rimuoverle.
Sostituisci INSTANCE_NAME con il nome della tua istanza Cloud SQL.
Nell'output, cerca il valore associato al campo serviceAccountEmailAddress
.
REST v1
Per importare i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:
- Crea un bucket Cloud Storage:
Esegui le seguenti sostituzioni:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
my-bucket
. - PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che stai creando.
- LOCATION_NAME: la posizione del bucket in cui vuoi archiviare i file che stai importando. Ad esempio,
us-east1
.
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
Carica i file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.
- Fornisci alla tua istanza il ruolo IAM
storage.objectAdmin
per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. Importa i dati da più file in parallelo in Cloud SQL:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL in cui importi i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di importazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di importazione.
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguito l'importazione. Devi specificare un solo database.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per importare i file in parallelo. Ad esempio, se vuoi importare tre file contemporaneamente in parallelo, specifica
3
come valore per questo parametro.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per utilizzare un utente diverso per l'importazione, specifica la proprietà
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.importContext.importUser
.- Se non hai bisogno delle autorizzazioni IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per PostgreSQL, utilizza
gcloud storage buckets remove-iam-policy-binding
per rimuoverle.
REST v1beta4
Per importare i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:
- Crea un bucket Cloud Storage:
Esegui le seguenti sostituzioni:gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
my-bucket
. - PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che stai creando.
- LOCATION_NAME: la posizione del bucket in cui vuoi archiviare i file che stai importando. Ad esempio,
us-east1
.
- BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio:
Carica i file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.
- Fornisci alla tua istanza il ruolo IAM
storage.objectAdmin
per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. Importa i dati da più file in parallelo in Cloud SQL:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_NAME: il nome del progetto Trusted Cloud by S3NS che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui importi i file in parallelo.
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BUCKET_PATH: il percorso del bucket in cui sono archiviati i file di importazione.
- FOLDER_NAME: la cartella in cui sono archiviati i file di importazione.
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguito l'importazione. Devi specificare un solo database.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per importare i file in parallelo. Ad esempio, se vuoi importare tre file contemporaneamente in parallelo, specifica
3
come valore per questo parametro.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_NAME/instances/INSTANCE_NAME/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "SQL", "uri": "gs://BUCKET_NAME/BUCKET_PATH/FOLDER_NAME", "databases": ["DATABASE_NAME"], "offload": [TRUE|FALSE], "sqlImportOptions": { "parallel": [TRUE|FALSE], "clean": [TRUE|FALSE], "ifExists": [TRUE|FALSE], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per utilizzare un utente diverso per l'importazione, specifica la proprietà
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.importContext.importUser
.- Se non hai bisogno delle autorizzazioni IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per PostgreSQL, utilizza
gcloud storage buckets remove-iam-policy-binding
per rimuoverle.
Limitazioni
Se specifichi troppi thread quando importi o esporti dati da più file in parallelo, potresti utilizzare più memoria di quella disponibile nell'istanza Cloud SQL. In questo caso, viene visualizzato un messaggio di errore interno. Controlla l'utilizzo della memoria dell'istanza e aumenta le dimensioni dell'istanza, se necessario. Per ulteriori informazioni, vedi Informazioni sulle impostazioni delle istanze.
Quando esegui un'esportazione, le virgole nei nomi dei database o delle tabelle nei campi
databases
otables
non sono supportate.Assicurati di avere spazio su disco sufficiente per il download del file di dump iniziale. In caso contrario, viene visualizzato un errore
no space left on disk
.Se la tua istanza ha una sola CPU virtuale (vCPU), non puoi importare o esportare più file in parallelo. Il numero di vCPU per l'istanza non può essere inferiore al numero di thread che utilizzi per l'operazione di importazione o esportazione e il numero di thread deve essere almeno due.
Le importazioni e le esportazioni multithread (parallele) non sono compatibili con le importazioni e le esportazioni single-thread. Ad esempio, i file di dump generati da un'esportazione a un solo thread possono essere importati solo da importazioni a un solo thread. Analogamente, i file dump generati da esportazioni parallele possono essere importati solo da importazioni parallele.
- L'utilità
pg_dump
non può dividere in blocchi le tabelle che esporti. Pertanto, se hai una tabella molto grande, questa può diventare un collo di bottiglia per la velocità dell'operazione di esportazione.
Passaggi successivi
- Scopri come controllare lo stato delle operazioni di importazione ed esportazione.
- Scopri come annullare l'importazione e l'esportazione dei dati.
- Scopri le best practice per l'importazione e l'esportazione dei dati.
- Scopri di più sui problemi noti relativi a importazioni ed esportazioni.