Esporta e importa file in parallelo

Questa pagina descrive l'esportazione e l'importazione di file in istanze Cloud SQL in parallelo.

Prima di iniziare

Prima di iniziare un'operazione di esportazione o importazione:

  • Assicurati che lo spazio libero nel database sia adeguato.
  • Le operazioni di esportazione e importazione utilizzano le risorse di database, ma non lo fanno interferiscono con le tipiche operazioni di database, a meno che l'istanza non abbia un provisioning insufficiente.

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

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

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

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

Per esportare dati da Cloud SQL a Cloud Storage, l'utente che avvia l'esportazione deve avere uno dei seguenti ruoli:

Inoltre, l'account di servizio per l'istanza Cloud SQL deve avere uno dei seguenti ruoli:

  • Ruolo di Identity and Access Management (IAM) di storage.objectAdmin
  • Un ruolo personalizzato che includa le seguenti autorizzazioni:
    • storage.objects.create
    • storage.objects.list (solo per esportare file in parallelo)
    • storage.objects.delete (solo per esportare file in parallelo)

Per assistenza con per i ruoli IAM, consulta Identity and Access Management.

Esportare i dati in più file in parallelo

Puoi esportare in parallelo i dati da più file che risiedono in Cloud SQL in Cloud Storage. Per farlo, utilizza l'utilità dumpInstance.

Quando i file sono in Cloud Storage, puoi importarli in un altro database Cloud SQL. Se vuoi accedere ai dati nei file in locale, scaricali da Cloud Storage nel tuo ambiente locale.

Se i tuoi file contengono clausole DEFINER (viste, trigger, stored_procedure e così via), a seconda dell'ordine l'utilizzo di questi file per l'importazione potrebbe non riuscire. Scopri di più su Utilizzo di DEFINER e potenziali soluzioni alternative in Cloud SQL.

gcloud

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

  1. Crea un bucket Cloud Storage.
  2. Per trovare l'account di servizio per l'istanza Cloud SQL che stai esportando 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 a l'account di servizio, usa il comando gcloud storage buckets add-iam-policy-binding. Per assistenza per l'impostazione di IAM autorizzazioni. Consulta Utilizzare le autorizzazioni IAM.
  5. Per esportare i dati da Cloud SQL su 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: percorso del bucket in cui sono archiviati i file di esportazione.
    • FOLDER_NAME: la cartella in cui sono archiviati i file esportati.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza per esportare file in parallelo. Ad esempio, se vuoi esportare tre file in parallelo, specifica 3 come valore per questo parametro.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene effettuata l'esportazione. Se non specifichi nessun database, Cloud SQL esporta tutti i database per l'istanza.
    • TABLE_EXPRESSION: le tabelle da esportare dal database specificato.
    di Gemini Advanced.

    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, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di dump della shell di MySQL.

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

REST v1

Per esportare i dati da Cloud SQL su 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
    
    Effettua le seguenti sostituzioni:
    • 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.
  2. Fornisci alla tua istanza il ruolo IAM legacyBucketWriter per del bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL su più file in parallelo:

    Prima di utilizzare i dati della richiesta, effettua 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: percorso del bucket in cui sono archiviati i file di esportazione.
    • FOLDER_NAME: la cartella in cui sono archiviati i file esportati.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene effettuata l'esportazione. Se non specifichi nessun database, Cloud SQL esporta tutti i database per l'istanza.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza per esportare file in parallelo. Ad esempio, se vuoi esportare tre file in parallelo, specifica 3 come valore per questo parametro.
    di Gemini Advanced.

    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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di dump della shell di MySQL.

  5. Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni obbligatori per l'esportazione da Cloud SQL per MySQL, revoca. li annotino.
di Gemini Advanced. Per l'elenco completo dei parametri per la richiesta, vedi API Cloud SQL Admin.

REST v1beta4

Per esportare i dati da Cloud SQL su 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
    
    Effettua le seguenti sostituzioni:
    • 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.
  2. Fornisci alla tua istanza il ruolo IAM storage.objectAdmin per del bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL su più file in parallelo:

    Prima di utilizzare i dati della richiesta, effettua 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: percorso del bucket in cui sono archiviati i file di esportazione.
    • FOLDER_NAME: la cartella in cui sono archiviati i file esportati.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene effettuata l'esportazione. Se non specifichi nessun database, Cloud SQL esporta tutti i database per l'istanza.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza per esportare file in parallelo. Ad esempio, se vuoi esportare tre file in parallelo, specifica 3 come valore per questo parametro.
    di Gemini Advanced.

    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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di dump della shell di MySQL.

  5. Se non hai bisogno del ruolo IAM che hai impostato in Ruoli e autorizzazioni obbligatori per l'esportazione da Cloud SQL per MySQL, revoca. li annotino.
di Gemini Advanced. Per l'elenco completo dei parametri per la richiesta, vedi API Cloud SQL Admin.

Importa dati da più file in parallelo a Cloud SQL per MySQL

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

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

Per importare dati da Cloud Storage a Cloud SQL, l'utente che avvia l'importazione deve avere uno dei seguenti ruoli:

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 includa le seguenti autorizzazioni:
    • storage.objects.get
    • storage.objects.list (solo per importare file in parallelo)

Per assistenza con per i ruoli IAM, consulta Identity and Access Management.

Importa dati in Cloud SQL per MySQL

Puoi importare dati in parallelo da più file che risiedono in Cloud Storage nel tuo database. Per farlo, utilizza l'utilità loadDump.

gcloud

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

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

    Per informazioni sul caricamento dei file nei bucket, consulta Caricamento di oggetti dai file.

  3. Per trovare l'account di servizio per l'istanza Cloud SQL che stai importando 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 a l'account di servizio, usa l'utilità gcloud storage buckets add-iam-policy-binding. Per assistenza per l'impostazione di IAM autorizzazioni. Consulta Utilizzare le autorizzazioni IAM.
  6. Per importare in Cloud SQL i dati da più file in parallelo, 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 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 che Cloud SQL utilizza per importare file in parallelo. Ad esempio, se vuoi importare tre file in parallelo, specifica 3 come valore per questo parametro.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'importazione. Se non specifichi nessun database, Cloud SQL importa tutti i database per l'istanza.

    Se il comando restituisce un errore come ERROR_RDBMS, esamina il permissions; questo errore è spesso dovuto a problemi di autorizzazioni.

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

REST v1

Per importare in Cloud SQL i dati da 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
    
    Effettua le seguenti sostituzioni:
    • 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.
  2. Carica i file nel bucket.

    Per informazioni sul caricamento dei file nei bucket, consulta Caricamento di oggetti dai file.

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizza le autorizzazioni IAM.
  4. Importa in Cloud SQL i dati da più file in parallelo:

    Prima di utilizzare i dati della richiesta, effettua 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 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.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'importazione. Se non specifichi nessun database, Cloud SQL importa tutti i database per l'istanza.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza per importare file in parallelo. Ad esempio, se vuoi importare tre file 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, vedi dell'API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM imposta in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, quindi utilizza gcloud storage buckets remove-iam-policy-binding per rimuoverli.

REST v1beta4

Per importare in Cloud SQL i dati da 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
    
    Effettua le seguenti sostituzioni:
    • 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.
  2. Carica i file nel bucket.

    Per informazioni sul caricamento dei file nei bucket, consulta Caricamento di oggetti dai file.

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizza le autorizzazioni IAM.
  4. Importa in Cloud SQL i dati da più file in parallelo:

    Prima di utilizzare i dati della richiesta, effettua 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 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.
    • (Facoltativo) DATABASE_NAME: il nome dei database all'interno dell'istanza Cloud SQL da cui viene eseguita l'importazione. Se non specifichi nessun database, Cloud SQL importa tutti i database per l'istanza.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza per importare file in parallelo. Ad esempio, se vuoi importare tre file 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, vedi dell'API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM imposta in Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per MySQL, quindi utilizza gcloud storage buckets remove-iam-policy-binding per rimuoverli.

Limitazioni

  • Se specifichi troppi thread quando importi o esporti dati da più file in parallelo, potresti utilizzare più memoria di quella dell'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 dell'istanza.
  • Quando esegui un'esportazione, le virgole nei nomi dei database o nei nomi delle tabelle nei campi databases o tables non sono supportate.
  • Assicurati di avere spazio su disco sufficiente per il download iniziale del file di dump. In caso contrario, viene visualizzato un errore no space left on disk.
  • Se l'istanza ha una sola CPU virtuale (vCPU), non puoi importare o esportare più file in parallelo. Il numero di vCPU per la tua istanza non può essere inferiore al numero di thread che stai utilizzando 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 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, è possibile che i dati importati parzialmente siano rimanenti. Per le istruzioni DDL, MySQL esegue automaticamente il commit. In questo caso, prima di importare di nuovo i dati, esegui la pulizia dei dati parziali.

Passaggi successivi