Esportare e importare file in parallelo

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.
  • 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.

  • Segui le best practice per l'esportazione e l'importazione dei dati.
  • Dopo aver completato un'operazione di importazione, verifica i risultati.

Esportare i dati da Cloud SQL per MySQL in più file in parallelo

Le seguenti sezioni contengono informazioni sull'esportazione parallela dei dati da Cloud SQL per MySQL in più file.

Ruoli e autorizzazioni richiesti per l'esportazione parallela dei dati da Cloud SQL per MySQL 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:

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à dumpInstance.

Una volta che i file si trovano 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 tuoi file contengono clausole DEFINER (viste, trigger, stored_procedures e così via), l'utilizzo di questi file per l'importazione può non riuscire a seconda dell'ordine di esecuzione di queste istruzioni. Scopri di più sull'utilizzo di DEFINER e sulle potenziali soluzioni alternative in Cloud SQL.

gcloud

Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage.
  2. 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
  3. Sostituisci INSTANCE_NAME con il nome della tua istanza Cloud SQL.

    Nell'output, cerca il valore associato al campo serviceAccountEmailAddress.

  4. Per concedere il ruolo IAM storage.objectAdmin all'account di servizio, utilizza il comando gcloud storage buckets add-iam-policy-binding. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  5. 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 stored procedure, ma contiene viste. Per esportare trigger o stored procedure, utilizza un singolo thread per l'esportazione. Questo thread utilizza lo strumento mysqldump.

    Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.

  6. Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocalo.

REST v1

Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Esegui le seguenti sostituzioni:
    • 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.
  2. 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.
  3. 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 (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:

  4. Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.

  5. Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocalo.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.

REST v1beta4

Per esportare i dati da Cloud SQL in più file in parallelo, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    Esegui le seguenti sostituzioni:
    • 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.
  2. 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.
  3. 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 (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:

  4. Al termine dell'esportazione, dovresti avere i file in una cartella del bucket Cloud Storage nel formato di dump di MySQL Shell.

  5. Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL, revocalo.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.

Importare dati da più file in parallelo in Cloud SQL per MySQL

Le sezioni seguenti contengono informazioni sull'importazione parallela di dati da più file in Cloud SQL per MySQL.

Ruoli e autorizzazioni richiesti per importare in parallelo dati da più file in Cloud SQL per MySQL

Per importare i dati da Cloud Storage in Cloud SQL, l'utente che avvia l'importazione deve disporre di uno dei seguenti ruoli:

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.

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 i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage.
  2. Carica i file nel bucket.

    Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.

  3. 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
  4. Sostituisci INSTANCE_NAME con il nome della tua istanza Cloud SQL.

    Nell'output, cerca il valore associato al campo serviceAccountEmailAddress.

  5. 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.
  6. 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 (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, esamina le autorizzazioni. Questo errore è spesso dovuto a problemi di autorizzazioni.

  7. Se non hai bisogno delle autorizzazioni IAM che hai impostato in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, utilizza gcloud storage buckets remove-iam-policy-binding per rimuoverle.

REST v1

Per importare i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Esegui le seguenti sostituzioni:
    • 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.
  2. Carica i file nel bucket.

    Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.

  3. 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.
  4. 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 (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 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],
            "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.
  5. Se non hai bisogno delle autorizzazioni IAM che hai impostato 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 i dati da più file in parallelo in Cloud SQL, completa i seguenti passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Esegui le seguenti sostituzioni:
    • 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.
  2. Carica i file nel bucket.

    Per assistenza con il caricamento di file nei bucket, consulta Carica oggetti dai file.

  3. 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.
  4. 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 (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 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],
             "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.
  5. Se non hai bisogno delle autorizzazioni IAM che hai impostato 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 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 o tables 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.

  • Se scrivi istruzioni DDL (Data Definition Language) come CREATE, DROP o ALTER durante un'operazione di esportazione, l'operazione potrebbe non riuscire o i dati esportati potrebbero non essere coerenti con lo snapshot del recupero point-in-time.

  • Se un'operazione di importazione non va a buon fine, potresti avere dati importati parzialmente rimanenti. MySQL esegue automaticamente il commit delle istruzioni DDL. In questo caso, prima di importare nuovamente i dati, pulisci le istruzioni DDL e i dati.

  • Analogamente a un'operazione di importazione parallela di un singolo database, prima di eseguire un'operazione di importazione parallela per un'intera istanza, assicurati che tutti i database siano stati creati prima di iniziare.

Passaggi successivi