Esportare e importare file in parallelo

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

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 l'istanza non sia sottoposta a 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 PostgreSQL in più file in parallelo

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

Ruoli e autorizzazioni necessari per esportare i dati da Cloud SQL per PostgreSQL in più file in parallelo

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 IAM (Identity and Access Management) storage.objectAdmin
  • Un ruolo personalizzato, incluse le seguenti autorizzazioni:
    • storage.objects.create
    • storage.objects.list (solo per l'esportazione di file in parallelo)
    • storage.objects.delete (solo per l'esportazione di file in parallelo)

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

Esporta i dati in più file in parallelo

Puoi esportare i dati in parallelo da più file che si trovano in Cloud SQL in Cloud Storage. La funzione gcloud sql export con il flag -parallel utilizza l'utilità pg_dump con l'opzione --jobs per esportare da più file.

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.

I file esportati in parallelo da Cloud SQL vengono compressi due volte. Sebbene tu possa importare questi file in Cloud SQL senza modifiche, se vuoi importarli in un altro database utilizzando l'utilità open source pg_dump, devi prima decomprimerli.

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 per l'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 al account di servizio, utilizza il comando gcloud storage buckets add-iam-policy-binding. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizza le 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 stai esportando 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 Esporta un'intera istanza.
    • TABLE_EXPRESSION: le tabelle da esportare dal database specificato.

    Al termine dell'esportazione, i file dovrebbero trovarsi in una cartella nel bucket Cloud Storage nel formato di directory pg_dump.

  6. Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, 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
    
    Apporta le seguenti sostituzioni:
    • BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio: my-bucket.
    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che stai creando.
    • LOCATION_NAME: la località 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 il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizza le autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL in più file in parallelo:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che hai creato.
    • INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui stai esportando 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:

  4. Al termine dell'esportazione, i file dovrebbero trovarsi in una cartella nel bucket Cloud Storage nel formato di directory pg_dump.

  5. Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revocalo.
Per l'elenco completo dei parametri della 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
    Apporta le seguenti sostituzioni:
    • BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio: my-bucket.
    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che stai creando.
    • LOCATION_NAME: la località 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 il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizza le autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL in più file in parallelo:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che hai creato.
    • INSTANCE_NAME: il nome dell'istanza Cloud SQL da cui stai esportando 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:

  4. Al termine dell'esportazione, i file dovrebbero trovarsi in una cartella nel bucket Cloud Storage nel formato di directory pg_dump.

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

Esporta e importa un'intera istanza

Puoi esportare o importare tutti i database utente in un'intera istanza utilizzando un'esportazione parallela formattata per directory.

Per esportare o importare un'intera istanza, utilizza gli stessi comandi mostrati nelle sezioni Esportazione in parallelo e Importazione in parallelo, rimuovendo rispettivamente il campo databases o database. 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 formattata per directory in Cloud Storage, dopo il completamento dell'esportazione, i dati associati a ogni database vengono archiviati in una sottodirectory denominata per ogni database, simile alla 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 del 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 un'esportazione o un'importazione dell'intera istanza per altri formati file.

Non puoi esportare o importare un'intera istanza come singolo file SQL o CSV.

Importa dati da più file in parallelo in Cloud SQL per PostgreSQL

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

Ruoli e autorizzazioni necessari per importare dati da più file in parallelo in Cloud SQL per PostgreSQL

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

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

  • Il ruolo IAM storage.objectAdmin
  • Un ruolo personalizzato, incluse le seguenti autorizzazioni:
    • storage.objects.get
    • storage.objects.list (solo per l'importazione di file in parallelo)

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

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

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

  3. Per trovare il account di servizio per l'istanza Cloud SQL in cui stai importando 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 Utilizza le autorizzazioni IAM.
  6. Per importare dati da più file in parallelo 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 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: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguita 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 autorizzazione.

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

REST v1

Per importare dati da più file in parallelo in Cloud SQL, segui questi passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Apporta le seguenti sostituzioni:
    • BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio: my-bucket.
    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che stai creando.
    • LOCATION_NAME: la località del bucket in cui vuoi archiviare i file che stai importando. Ad esempio, us-east1.
  2. Carica i file nel bucket.

    Per assistenza sul 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 Utilizza le autorizzazioni IAM.
  4. Importa i dati da più file in parallelo in Cloud SQL:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che hai creato.
    • INSTANCE_NAME: il nome dell'istanza Cloud SQL in 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: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguita 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 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],
             "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à importContext.importUser.

    Per l'elenco completo dei parametri per la richiesta, consulta la pagina API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM impostate 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 dati da più file in parallelo in Cloud SQL, segui questi passaggi:

  1. Crea un bucket Cloud Storage:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    
    Apporta le seguenti sostituzioni:
    • BUCKET_NAME: il nome del bucket, soggetto ai requisiti di denominazione. Ad esempio: my-bucket.
    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS che contiene il bucket Cloud Storage che stai creando.
    • LOCATION_NAME: la località del bucket in cui vuoi archiviare i file che stai importando. Ad esempio, us-east1.
  2. Carica i file nel bucket.

    Per assistenza sul 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 Utilizza le autorizzazioni IAM.
  4. Importa i dati da più file in parallelo in Cloud SQL:

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • PROJECT_NAME: il nome del progetto Cloud de Confiance by S3NS 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: il nome del database all'interno dell'istanza Cloud SQL da cui viene eseguita 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 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],
              "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à importContext.importUser.

    Per l'elenco completo dei parametri della richiesta, consulta la pagina API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM impostate 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 la memoria utilizzata dall'istanza e aumenta le dimensioni dell'istanza, se necessario. Per saperne di più, consulta 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 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 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 multi-thread (parallele) non sono compatibili con le importazioni e le esportazioni single-thread. Ad esempio, i file di dump generati da un'esportazione single-thread possono essere importati solo da importazioni single-thread. Analogamente, i file di dump generati dalle esportazioni parallele possono essere importati solo dalle importazioni parallele.

  • L'utilità pg_dump non può suddividere 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