Questa pagina descrive l'esportazione e l'importazione di file in parallelo nelle istanze Cloud SQL.
Prima di iniziare
Prima di iniziare un'operazione di esportazione o importazione:
- Assicurati che il database abbia 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 interferendo con le normali operazioni del database, a meno che l'istanza non sia sottodimensionata.
Esportare i dati da Cloud SQL per MySQL in più file in parallelo
Le seguenti sezioni contengono informazioni sull'esportazione dei dati da Cloud SQL per MySQL in più file in parallelo.
Ruoli e autorizzazioni richiesti per esportare i dati da Cloud SQL per MySQL in più file in parallelo
Per esportare i dati da Cloud SQL in Cloud Storage, l'utente che avvia l'esportazione deve avere uno dei seguenti ruoli:
- Il ruolo Editor Cloud SQL
- Un ruolo personalizzato,
che include le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.export
Inoltre, l'account di servizio per l'istanza Cloud SQL deve avere uno dei seguenti ruoli:
- Il ruolo
storage.objectAdmin
Identity and Access Management (IAM) - Un ruolo personalizzato, che include le seguenti autorizzazioni:
storage.objects.create
storage.objects.list
(solo per l'esportazione dei file in parallelo)storage.objects.delete
(solo per l'esportazione dei file in parallelo)
Per assistenza sui ruoli IAM, consulta Identity and Access Management.
Esportare i dati in più file in parallelo
Puoi esportare i dati in parallelo da più file in Cloud SQL a Cloud Storage. Per farlo, utilizza l'utilitàdumpInstance
.
Una volta che i file sono in Cloud Storage, puoi importarli in un altro database Cloud SQL. Se vuoi accedere ai dati nei file localmente, scaricali da Cloud Storage nel tuo ambiente locale.
Se i file contengono clausole DEFINER (viste, trigger, stored_procedure e così via), a seconda dell'ordine di esecuzione di queste istruzioni, l'utilizzo di questi file per l'importazione può non riuscire. Scopri di più sull'utilizzo di DEFINER e su potenziali soluzioni alternative in Cloud SQL.
gcloud
Per esportare i dati da Cloud SQL in più file in parallelo:
- Crea un bucket Cloud Storage.
- Per trovare l'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 sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 alcun database, Cloud SQL esporta tutti i database per l'istanza.
- TABLE_EXPRESSION: le tabelle da esportare dal database specificato.
Il comando
export sql
non contiene trigger o procedure memorizzate, ma contiene viste. Per esportare gli attivatori o le procedure memorizzate, utilizza un singolo thread per l'esportazione. Questo thread utilizza lo strumentomysqldump
.Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.
- Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocarlo.
Sostituisci INSTANCE_NAME con il nome dell'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:
- 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 Google Cloud 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 all'istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 Google Cloud 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 (facoltativo): il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'esportazione. Se non specifichi alcun database, Cloud SQL esporta tutti i database per l'istanza.
- 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 impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocarlo.
Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.
REST v1beta4
Per esportare i dati da Cloud SQL in più file in parallelo:
- 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 Google Cloud 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 all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 Google Cloud 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 (facoltativo): il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'esportazione. Se non specifichi alcun database, Cloud SQL esporta tutti i database per l'istanza.
- 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 impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocarlo.
Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.
Importare dati da più file in parallelo in Cloud SQL per MySQL
Le sezioni seguenti contengono informazioni sull'importazione di dati da più file in parallelo in Cloud SQL per MySQL.
Ruoli e autorizzazioni richiesti per l'importazione di dati da più file in parallelo in Cloud SQL per MySQL
Per importare i dati da Cloud Storage in Cloud SQL, l'utente che avvia l'importazione deve avere uno dei seguenti ruoli:
- Il ruolo Amministratore Cloud SQL
- Un ruolo personalizzato,
che include le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.import
Inoltre, l'account di servizio per l'istanza Cloud SQL deve avere uno dei seguenti ruoli:
- Il ruolo IAM
storage.objectAdmin
- Un ruolo personalizzato, che include le seguenti autorizzazioni:
storage.objects.get
storage.objects.list
(solo per l'importazione di file in parallelo)
Per assistenza sui ruoli IAM, consulta Identity and Access Management.
Importare dati in Cloud SQL per MySQL
Puoi importare i dati in parallelo da più file che si trovano in Cloud Storage nel tuo database. Per farlo, utilizza l'utilità loadDump
.
gcloud
Per importare in parallelo i dati da più file in Cloud SQL:
- Crea un bucket Cloud Storage.
Carica i file nel bucket.
Per assistenza sul caricamento dei file nei bucket, consulta Caricare oggetti da file.
- Per trovare l'account di servizio dell'istanza Cloud SQL in cui stai importando 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 l'utilitàgcloud storage buckets add-iam-policy-binding
. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 \ --offload \ --parallel \ --threads=THREAD_NUMBER \ --database=DATABASE_NAME
Effettua le seguenti sostituzioni:
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui stai importando 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 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'importazione. Se non specifichi alcun database, Cloud SQL importa tutti i database per l'istanza.
Se il comando restituisce un errore come
ERROR_RDBMS
, controlla le autorizzazioni. Questo errore è spesso dovuto a problemi di autorizzazione. - Se non hai bisogno delle autorizzazioni IAM impostate in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, utilizza
gcloud storage buckets remove-iam-policy-binding
per rimuoverle.
Sostituisci INSTANCE_NAME con il nome dell'istanza Cloud SQL.
Nell'output, cerca il valore associato al campo serviceAccountEmailAddress
.
REST v1
Per importare in parallelo i dati da più file in Cloud SQL:
- 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 Google Cloud 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 sul caricamento dei file nei bucket, consulta Caricare oggetti da file.
- Fornisci all'istanza il ruolo IAM
storage.objectAdmin
per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 Google Cloud che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL a cui stai importando 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 (facoltativo): il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'importazione. Se non specifichi alcun database, Cloud SQL importa tutti i database per l'istanza.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per importare i file in parallelo. Ad esempio, se vuoi importare 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/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], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.- Se non hai bisogno delle autorizzazioni IAM impostate in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, utilizza
gcloud storage buckets remove-iam-policy-binding
per rimuoverle.
REST v1beta4
Per importare in parallelo i dati da più file in Cloud SQL:
- 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 Google Cloud 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 sul caricamento dei file nei bucket, consulta Caricare oggetti da file.
- Fornisci all'istanza il ruolo IAM
storage.objectAdmin
per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le 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 Google Cloud che contiene il bucket Cloud Storage che hai creato.
- INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui stai importando 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 (facoltativo): il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'importazione. Se non specifichi alcun database, Cloud SQL importa tutti i database per l'istanza.
- THREAD_NUMBER: il numero di thread utilizzati da Cloud SQL per importare i file in parallelo. Ad esempio, se vuoi importare 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/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], "threads": [THREAD_NUMBER] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.- Se non hai bisogno delle autorizzazioni IAM impostate in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, 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 aumentane le dimensioni, se necessario. Per ulteriori informazioni, vedi Informazioni sulle impostazioni delle istanze.
- Quando esegui un'esportazione, le virgole nei nomi dei database o dei nomi delle tabelle nei campi
databases
otables
non sono supportate. - Assicurati di avere spazio su disco sufficiente per il download del file 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 utilizzati per l'operazione di importazione o esportazione e il numero di thread deve essere almeno due.
- Se scrivi istruzioni DDL (Data Definition Language) come
CREATE
,DROP
oALTER
durante un'operazione di esportazione, l'operazione potrebbe non riuscire o i dati esportati potrebbero non essere coerenti con lo snapshot del recupero in un determinato momento. - Se un'operazione di importazione non va a buon fine, è possibile che rimangano dati parzialmente importati. Per gli enunciati DDL, MySQL esegue il commit automaticamente. In questo caso, prima di importare di nuovo i dati, pulisci i dati parziali.
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 i problemi noti relativi a importazioni ed esportazioni.