Esporta e importa i 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 adeguato.
  • Le operazioni di esportazione e importazione utilizzano le risorse del database, ma non interferiscono con le normali operazioni di database, a meno che non sia stato eseguito un provisioning insufficiente dell'istanza.

  • 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 su più file in parallelo

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

Autorizzazioni e ruoli richiesti per esportare i dati da Cloud SQL per PostgreSQL a 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:

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, 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 in parallelo i dati da più file presenti in Cloud SQL in Cloud Storage. A questo scopo, utilizza l'utilità pg_dump con l'opzione --jobs.

Se prevedi di importare i dati in Cloud SQL, segui le istruzioni fornite in Esportare i dati da un server di database esterno per assicurarti che i file siano formattati correttamente per Cloud SQL.

gcloud

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

  1. Crea un bucket Cloud Storage.
  2. Per trovare l'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 dell'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 l'utilità gsutil iam. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare 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 vengono esportati 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 che Cloud SQL utilizza 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: il nome del database all'interno dell'istanza Cloud SQL da cui viene effettuata l'esportazione. Devi specificare un solo database.
    • 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 pg_dump.

    Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del 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, revoke questo ruolo.

REST v1

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

  1. Crea un bucket Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Effettua le seguenti sostituzioni:
    • 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: my-bucket.
  2. Fornisci all'istanza il ruolo IAM legacyBucketWriter per il bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL in 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 vengono esportati 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 effettuata l'esportazione. Devi specificare un solo database.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza 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 essere presenti in una cartella del 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, revoke questo ruolo.
Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.

REST v1beta4

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

  1. Crea un bucket Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Effettua le seguenti sostituzioni:
    • 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: my-bucket.
  2. Fornisci all'istanza il ruolo IAM storage.objectAdmin per il bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  3. Esporta i dati da Cloud SQL in 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 vengono esportati 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 effettuata l'esportazione. Devi specificare un solo database.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza 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 essere presenti in una cartella del 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, revoke questo ruolo.
Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.

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

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

Autorizzazioni e ruoli obbligatori per importare dati da più file in parallelo a 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, l'account di servizio per l'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 importare file in parallelo)

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

Importa dati in Cloud SQL per PostgreSQL

Puoi importare dati in parallelo da più file che risiedono in Cloud Storage nel tuo database. A questo scopo, utilizza l'utilità pg_restore con l'opzione --jobs.

gcloud

Per importare in Cloud SQL i dati di più file contemporaneamente:

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

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

  3. Per trovare l'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 dell'istanza Cloud SQL.

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

  5. Per concedere il ruolo IAM storage.objectAdmin all'account di servizio, utilizza l'utilità gsutil iam. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  6. Per importare in Cloud SQL i dati di più file contemporaneamente, 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 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 effettuata l'importazione. Devi specificare un solo database.

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

  7. Se non hai bisogno delle autorizzazioni IAM impostate in Autorizzazioni e ruoli obbligatori per l'importazione in Cloud SQL per PostgreSQL, utilizza gsutil iam per rimuoverle.

REST v1

Per importare in Cloud SQL i dati di più file contemporaneamente:

  1. Crea un bucket Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Effettua le seguenti sostituzioni:
    • 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: my-bucket.
  2. Carica i file nel bucket.

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

  3. Fornisci all'istanza il ruolo IAM storage.objectAdmin per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  4. Importa i dati da più file in parallelo in Cloud SQL:

    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.
    • DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene effettuata l'importazione. Devi specificare un solo database.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza 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 utilizzare un utente diverso per l'importazione, specifica la proprietà importContext.importUser.

    Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM impostate in Autorizzazioni e ruoli obbligatori per l'importazione in Cloud SQL per PostgreSQL, utilizza gsutil iam per rimuoverle.

REST v1beta4

Per importare in Cloud SQL i dati di più file contemporaneamente:

  1. Crea un bucket Cloud Storage:
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
    Effettua le seguenti sostituzioni:
    • 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: my-bucket.
  2. Carica i file nel bucket.

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

  3. Fornisci all'istanza il ruolo IAM storage.objectAdmin per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  4. Importa i dati da più file in parallelo in Cloud SQL:

    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.
    • DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL da cui viene effettuata l'importazione. Devi specificare un solo database.
    • THREAD_NUMBER: il numero di thread che Cloud SQL utilizza 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 utilizzare un utente diverso per l'importazione, specifica la proprietà importContext.importUser.

    Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.
  5. Se non hai bisogno delle autorizzazioni IAM impostate in Autorizzazioni e ruoli obbligatori per l'importazione in Cloud SQL per PostgreSQL, utilizza gsutil iam per rimuoverle.

Limitazioni

  • Se specifichi troppi thread quando importi o esporti i 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 in base alle esigenze. Per saperne di più, consulta Informazioni sulle impostazioni dell'istanza.
  • 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 la tua 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.
  • L'utilità pg_dump non può suddividere le tabelle esportate. Pertanto, se hai una tabella di grandi dimensioni, potrebbe diventare un collo di bottiglia per la velocità dell'operazione di esportazione.

Passaggi successivi