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.
- 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 interferiscono con le normali operazioni di database, a meno che non sia stato eseguito un provisioning insufficiente dell'istanza.
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:
- Il ruolo Editor Cloud SQL
- Un ruolo personalizzato,
incluse 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, 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:
- Crea un bucket Cloud Storage.
- 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
- 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. - 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 strumentopg_dump
.Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di directory
pg_dump
. - Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revoke questo ruolo.
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, segui questi passaggi:
- 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
.
- Fornisci all'istanza il ruolo IAM
legacyBucketWriter
per il 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, 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:
- Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revoke questo ruolo.
Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di directory pg_dump
.
REST v1beta4
Per esportare i dati da Cloud SQL in più file in parallelo, segui questi passaggi:
- 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
.
- Fornisci all'istanza il ruolo IAM
storage.objectAdmin
per il 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, 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:
- Se non hai bisogno del ruolo IAM impostato in Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per PostgreSQL, revoke questo ruolo.
Al termine dell'esportazione, i file dovrebbero essere presenti in una cartella del bucket Cloud Storage nel formato di directory pg_dump
.
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:
- Il ruolo Editor Cloud SQL
- Un ruolo personalizzato,
incluse 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, 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:
- Crea un bucket Cloud Storage.
Carica i file nel bucket.
Per informazioni sul caricamento dei file nei bucket, consulta Caricare oggetti dai file.
- 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
- 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. - 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. - 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.
Sostituisci INSTANCE_NAME con il nome dell'istanza Cloud SQL.
Nell'output, cerca il valore associato al campo serviceAccountEmailAddress
.
REST v1
Per importare in Cloud SQL i dati di più file contemporaneamente:
- 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
.
Carica i file nel bucket.
Per informazioni sul caricamento dei file nei bucket, consulta Caricare oggetti dai 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, 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à
Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.importContext.importUser
.- 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:
- 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
.
Carica i file nel bucket.
Per informazioni sul caricamento dei file nei bucket, consulta Caricare oggetti dai 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, 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à
Per l'elenco completo dei parametri della richiesta, consulta la pagina dell'API Cloud SQL Admin.importContext.importUser
.- 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
otables
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
- 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 di più sui problemi noti relativi a importazioni ed esportazioni.