Questa pagina descrive l'esportazione e l'importazione di dati nelle istanze Cloud SQL utilizzando file BAK e l'importazione di dati nelle istanze Cloud SQL utilizzando file di log delle transazioni.
Prima di iniziare
Le esportazioni utilizzano le risorse del database, ma non interferiscono con le normali operazioni del database, a meno che il provisioning dell'istanza non sia insufficiente.
Per le best practice, consulta Best practice per l'importazione e l'esportazione dei dati.
Dopo aver completato un'operazione di importazione, verifica i risultati.
Esportare dati da Cloud SQL per SQL Server
Cloud SQL supporta l'esportazione di file BAK integrati.
Se vuoi creare una nuova istanza da un file esportato, valuta la possibilità di eseguire il ripristino da un backup in un'altra istanza o di clonare l'istanza.
Cloud SQL esegue un backup completo del database selezionato durante un'operazione di esportazione.
Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per SQL Server
Per esportare i dati da Cloud SQL in Cloud Storage, l'utente che avvia l'esportazione deve disporre di uno dei seguenti ruoli:
- Il ruolo Editor Cloud SQL
- Un ruolo personalizzato,
incluse le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.export
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
(per l'esportazione a strisce e l'esportazione del log delle transazioni)storage.objects.delete
(per l'esportazione a strisce e l'esportazione del log delle transazioni)storage.buckets.get
(solo per l'esportazione del log delle transazioni)
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Esportare i dati in un file BAK da Cloud SQL per SQL Server
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Esporta.
- Nella sezione Formato file, fai clic su BAK.
- Nella sezione Dati da esportare, utilizza il menu a discesa per selezionare il database da cui vuoi esportare i dati.
- Nella sezione Destinazione, seleziona Sfoglia per cercare un bucket o una cartella Cloud Storage per l'esportazione.
- Fai clic su Esporta per avviare l'esportazione.
gcloud
- Crea un bucket Cloud Storage.
- Trova il account di servizio dell'istanza Cloud SQL da cui stai esportando. A tale scopo, esegui il comando
gcloud sql instances describe
. Cerca il camposerviceAccountEmailAddress
nell'output.gcloud sql instances describe INSTANCE_NAME
- Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectAdmin
ruolo IAM al account di servizio. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Esporta il database:
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \ --database=DATABASE_NAME
Per informazioni sull'utilizzo del comando
gcloud sql export bak
, consulta la pagina di riferimento del comando. - Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
REST v1
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il database:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_DUMP_FILE: il percorso del file di dump SQL
- DATABASE_NAME_1: il nome di un database all'interno dell'istanza Cloud SQL
- DATABASE_NAME_2: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON della richiesta:
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
REST v1beta4
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il database:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_DUMP_FILE: il percorso del file di dump SQL
- DATABASE_NAME_1: il nome di un database all'interno dell'istanza Cloud SQL
- DATABASE_NAME_2: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON della richiesta:
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
Esportare backup differenziali del database
Prima di esportare un backup differenziale del database, devi esportare una base differenziale.
Se altri servizi o funzionalità, come il recupero point-in-time e la replica di lettura, attivano un backup completo tra l'esportazione del backup completo e l'esportazione del backup differenziale, devi attivare di nuovo l'esportazione del backup completo.
Per capire meglio, considera l'esempio seguente:
- Alle 7:00 invii una richiesta di backup completo.
- Abiliti il recupero point-in-time alle 9:00. Questa operazione attiva un backup completo dell'istanza.
- Provi a eseguire un backup differenziale alle 17:00. Questa richiesta di esportazione non va a buon fine e viene visualizzato un messaggio di errore perché l'ultimo backup completo è stato attivato dal recupero point-in-time.
Cloud SQL non supporta le richieste di esportazione del database con --differential-base
o --bak-type=DIFF
sulle istanze di replica.
gcloud
- Crea un bucket Cloud Storage.
- Trova il account di servizio dell'istanza Cloud SQL da cui stai esportando.
A tale scopo, esegui il comando
gcloud sql instances describe
. Cerca il camposerviceAccountEmailAddress
nell'output.gcloud sql instances describe INSTANCE_NAME
- Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectAdmin
ruolo IAM al account di servizio. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. Esporta il database come base differenziale.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --differential-base
Per informazioni sull'utilizzo del comando
gcloud sql export bak
, consulta la pagina di riferimento del comando.Esporta un backup differenziale.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF
Per informazioni sull'utilizzo del comando
gcloud sql export bak
, consulta la pagina di riferimento del comando.- Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
REST v1
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il backup completo del database come base differenziale.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_BAK_FILE: il percorso del file BAK SQL
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL
offload
: per attivare e utilizzare l'esportazione serverless, imposta questo valore su TRUE
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "databases": ["DATABASE_NAME"] "offload": TRUE | FALSE "bakExportOptions": { "differentialBase":true } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Esporta un backup differenziale.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_dump_file: Il percorso del file di dump SQL
- database_name_1: il nome di un database all'interno dell'istanza Cloud SQL
- database_name_2: il nome di un database all'interno dell'istanza Cloud SQL
- offload: attiva l'esportazione serverless. Imposta
true
per utilizzare l'esportazione serverless.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
REST v1beta4
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il backup completo del database come base differenziale.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_dump_file: il percorso del file di dump SQL
- database_name_1: il nome di un database all'interno dell'istanza Cloud SQL
- database_name_2: il nome di un database all'interno dell'istanza Cloud SQL
- offload: per attivare e utilizzare l'esportazione serverless, imposta il valore su
true
.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { "differentialBase":true } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Esporta un backup differenziale:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_dump_file: il percorso del file di dump SQL
- database_name_1: il nome di un database all'interno dell'istanza Cloud SQL
- database_name_2: il nome di un database all'interno dell'istanza Cloud SQL
- offload: per abilitare e utilizzare le esportazioni serverless, imposta questo valore su
true
.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_dump_file", "databases": ["database_name"] "offload": true | false "bakExportOptions": { bakType:"DIFF" } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
Esportare i log delle transazioni
Puoi esportare i log delle transazioni per tutte le istanze Cloud SQL per SQL Server che hanno abilitato il recupero point-in-time (PITR) e i cui log sono archiviati in Cloud Storage.
gcloud
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Trova il account di servizio dell'istanza Cloud SQL da cui stai esportando.
A tale scopo, esegui il comando
gcloud sql instances describe
. Cerca il camposerviceAccountEmailAddress
nell'output.gcloud sql instances describe INSTANCE_NAME
- Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.Admin
ruolo IAM al account di servizio. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Impostare e gestire le policy IAM sui bucket. Esporta i log delle transazioni.
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_PATH --export-log-start-time=START_DATE_AND_TIME / --export-log-end-time=END_DATE_AND_TIME / --database=DATABASE_NAME --bak-type=TLOG
Per informazioni sull'utilizzo del comando
gcloud sql export bak
, consulta la pagina di riferimento del comando.- Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
REST
-
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
storage.Admin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Impostare e gestire le policy IAM sui bucket. - Esporta i log delle transazioni.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- FOLDER_PATH: il percorso della cartella nel bucket Cloud Storage. Cloud SQL esporta i log delle transazioni in questa cartella.
- DATABASE_NAME: il nome del database all'interno dell'istanza Cloud SQL.
exportLogStartTime
: la data e l'ora di inizio dei log delle transazioni da esportare.exportLogEndTime
: la data e l'ora di fine dei log delle transazioni da esportare.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/FOLDER_PATH", "databases": ["DATABASE_NAME"] "bakExportOptions": { bakType:"TLOG" exportLogStartTime: START_DATE_AND_TIME exportLogEndTime: END_DATE_AND_TIME } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
Utilizzare l'esportazione a strisce
I vantaggi dell'esportazione a strisce sono i seguenti:
- Riduzione del tempo necessario per completare le operazioni
- È possibile esportare database di dimensioni superiori a 5 TB
Un potenziale svantaggio dell'utilizzo dell'esportazione a bande è che il backup, anziché essere costituito da un unico file, viene suddiviso in un insieme di file. Questo set è chiamato "stripe set"; vedi Eseguire il backup dei dispositivi in un set di supporti a strisce (uno stripe set). In Cloud SQL, l'esportazione avviene in una cartella vuota in Cloud Storage anziché generare un singolo file. Per ulteriori informazioni, consulta la pagina Come utilizzare l'esportazione a strisce.
Pianificare le operazioni
L'esportazione a strisce può migliorare le prestazioni delle esportazioni. Tuttavia, se il tuo caso d'uso richiede un singolo file di output o se la dimensione del database è inferiore a 5 TB e se le prestazioni più veloci non sono fondamentali, ti consigliamo di utilizzare un'esportazione non a strisce.
Se decidi di utilizzare l'esportazione a strisce, considera il numero di strisce. Puoi specificare questo valore nel comando gcloud CLI o nella chiamata API REST. Tuttavia, se vuoi un numero ottimale di strisce per il rendimento o se non conosci un numero, omettilo. Viene impostato automaticamente un numero ottimale di strisce.
Il numero massimo di strisce attualmente supportato da Cloud SQL per SQL Server è 64.
Come utilizzare l'esportazione a strisce
gcloud
- Crea un bucket Cloud Storage.
- Trova il account di servizio dell'istanza Cloud SQL da cui stai esportando. A tale scopo, esegui il comando
gcloud sql instances describe
. Cerca il camposerviceAccountEmailAddress
nell'output.gcloud sql instances describe INSTANCE_NAME
- Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectAdmin
ruolo IAM al account di servizio. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Per esportare il database, specifica il parametro
--striped
e/o specifica un valore per--stripe_count
. L'impostazione di un valore per--stripe_count
implica che è previsto il parametro--striped
. Si verifica un errore se specifichi--no-striped
ma specifichi un valore per--stripe_count
:gcloud beta sql export bak INSTANCE_NAME \ gs://BUCKET_NAME/STRIPED_EXPORT_FOLDER \ --database=DATABASE_NAME --striped --stripe_count=NUMBER
Per informazioni sull'utilizzo del comando
gcloud beta sql export bak
, consulta la pagina di riferimento del comando. - Se non devi conservare il ruolo IAM che hai impostato in precedenza, revocalo ora.
REST v1
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per non aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il database:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_folder: il percorso della cartella (nel bucket Cloud Storage) in cui esportare il set a strisce
- database_name: il nome di un database nell'istanza Cloud SQL
- true | false: imposta su
true
per utilizzare l'esportazione a strisce. Se specifichitrue
senza specificare un conteggio delle strisce, viene impostato automaticamente un numero ottimale di strisce - number_of_stripes: il numero di strisce da utilizzare. Se specificato,
striped
è implicito cometrue
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
REST v1beta4
-
Crea un bucket Cloud Storage per l'esportazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per evitare di aprire l'accesso ad altri dati.
- Fornisci alla tua istanza il
legacyBucketWriter
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, vedi Utilizzo delle autorizzazioni IAM. - Esporta il database:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_folder: il percorso della cartella (nel bucket Cloud Storage) in cui esportare il set suddiviso
- database_name: il nome di un database nell'istanza Cloud SQL
- true | false: imposta su
true
per utilizzare l'esportazione a strisce. Se specifichitrue
senza specificare un conteggio delle strisce, viene impostato automaticamente un numero ottimale di strisce - number_of_stripes: il numero di strisce da utilizzare. Se specificato,
striped
è implicito cometrue
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/export
Corpo JSON della richiesta:
{ "exportContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "databases": ["database_name"], "bakExportOptions": { "striped": true | false, "stripe_count": ["number_of_stripes"] } } }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare il ruolo IAM che hai impostato in precedenza, rimuovilo ora.
Importa in Cloud SQL per SQL Server
Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per SQL Server
Per importare i dati da Cloud Storage in Cloud SQL, l'utente che avvia l'importazione deve disporre di uno dei seguenti ruoli:
- Il ruolo Amministratore Cloud SQL
- Un ruolo personalizzato,
incluse le seguenti autorizzazioni:
cloudsql.instances.get
cloudsql.instances.import
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 a strisce)
Per assistenza con i ruoli IAM, consulta Identity and Access Management.
Importare dati da un file BAK in Cloud SQL per SQL Server
Per utilizzare l'importazione a strisce, consulta Utilizzare l'importazione a strisce.
Sono disponibili vari framework di importazione. Ad esempio, Cloud SQL per SQL Server supporta Change Data Capture (CDC) per le seguenti versioni del database:
- SQL Server 2017 Standard
- SQL Server 2017 Enterprise
- SQL Server 2019 Standard
- SQL Server 2019 Enterprise
- SQL Server 2022 Standard
- SQL Server 2022 Enterprise
Quando importi un database abilitato per CDC, il flag KEEP_CDC viene mantenuto.
Se la versione dell'istanza è Microsoft SQL Server Enterprise Edition, puoi importare file BAK criptati.
Le istanze di Microsoft SQL Server Standard Edition importano anche i file BAK criptati, ma solo tramite gcloud CLI.
Le uniche estensioni BAK supportate sono
.bak
e .bak.gz
. I backup criptati con GPG
non sono attualmente supportati.
Per le istruzioni riportate di seguito, preparati a specificare un nuovo database. Non creare un database prima di iniziare l'importazione del file BAK.
Per importare dati in un'istanza Cloud SQL utilizzando un file BAK:
Console
-
Nella console Google Cloud , vai alla pagina Istanze Cloud SQL.
- Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
- Fai clic su Importa.
- Nel campo Scegli un file da cui eseguire l'importazione,
inserisci il percorso del bucket e del file BAK da utilizzare per l'importazione.
Puoi importare un file compresso (
.gz
) o non compresso. Nella sezione Formato file, seleziona BAK.
- Nella sezione Destinazione, specifica il database nell'istanza Cloud SQL in cui vuoi importare il file BAK.
- Per avviare l'importazione, fai clic su Importa.
gcloud
Crea un bucket Cloud Storage per l'importazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per evitare di aprire l'accesso ad altri dati.
- Assicurati di aver configurato i ruoli e le autorizzazioni richiesti.
- Carica i dati dal file BAK nel bucket.
- Descrivi l'istanza in cui stai importando:
gcloud sql instances describe INSTANCE_NAME
- Copia il campo
serviceAccountEmailAddress
. - Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectViewer
ruolo IAM al account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dal file:
Per le importazioni criptate, utilizza il seguente comando:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \ --database=DATABASE_NAME
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME --database=DATABASE_NAME --cert-path=gs://BUCKET_NAME/CERTIFICATE_NAME --pvk-path=gs://BUCKET_NAME/KEY_NAME --prompt-for-pvk-password
- Se non devi conservare le autorizzazioni IAM che hai
impostato in precedenza, rimuovile utilizzando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dal file:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_bak_file: il percorso del file BAK
- database_name: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
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 per la richiesta, consulta la pagina instances:import.importContext.importUser
. - Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
REST v1beta4
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dal file:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_bak_file: il percorso del file BAK
- database_name: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" } }
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 per la richiesta, consulta la pagina instances:import.importContext.importUser
. - Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
Se ricevi un errore come ERROR_RDBMS
, assicurati che il file BAK
esista nel bucket e di disporre delle autorizzazioni
corrette per il bucket. Per assistenza nella configurazione controllo dell'accesso dell'accesso in
Cloud Storage, consulta
Creazione e gestione degli elenchi di controllo di accesso.
Importare backup differenziali del database
Prima di importare un backup differenziale del database, devi importare un backup completo e il database deve trovarsi nello stato RESTORING
dopo l'importazione del backup completo.
Cloud SQL non supporta l'importazione di backup differenziali del database su istanze su cui è abilitato il recupero point-in-time. Questo perché l'importazione di un backup del database con --no-recovery
è un prerequisito per l'importazione di backup differenziali del database. Inoltre, non puoi abilitare il recupero point-in-time su un'istanza se il database è nello stato RESTORING
.
In caso di errore di importazione, esegui una delle seguenti operazioni per attivare il recupero point-in-time:
Porta online il database nello stato
RESTORING
utilizzando il flag--recovery-only
.Rimuovi il database.
Per importare dati in un'istanza Cloud SQL utilizzando un backup differenziale del database, segui questi passaggi:
gcloud
Crea un bucket Cloud Storage per l'importazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma ti consigliamo vivamente di eseguirlo per non aprire l'accesso ad altri dati.
- Assicurati di aver configurato i ruoli e le autorizzazioni richiesti.
- Carica i dati dal file BAK nel bucket.
- Descrivi l'istanza in cui stai importando:
gcloud sql instances describe INSTANCE_NAME
- Copia il campo
serviceAccountEmailAddress
. - Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectViewer
ruolo IAM al account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. Importa un backup completo con
--no-recovery
.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
-
Importa un backup differenziale del database.
gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=DIFF --no-recovery
-
Dopo aver ripristinato tutti i file di backup, utilizza il flag
--recovery-only
per portare online il database importato dallo statoRESTORING
. Gli utenti sono vivamente invitati a non utilizzare i comandi T-SQL per portare online il database importato.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Se non devi conservare le autorizzazioni IAM che hai
impostato in precedenza, rimuovile utilizzando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. -
Importa un backup completo con
noRecovery
.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_BAK_FILE: il percorso del file BAK.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Importa un backup differenziale del database.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_bak_file: il percorso del file BAK
- database_name: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
Dopo aver ripristinato tutti i file di backup, utilizza il flag
recoveryOnly
per portare online il database importato dallo statoRESTORING
. Gli utenti sono vivamente invitati a non utilizzare i comandi T-SQL per portare online il database importato.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_BAK_FILE: il percorso del file BAK
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
REST v1beta4
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. -
Importa un backup completo con
noRecovery
.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT-ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_BAK_FILE: il percorso del file BAK.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Importa un backup differenziale del database.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_bak_file: il percorso del file BAK
- database_name: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_bak_file", "database": "database_name" "bakImportOptions": { "bakType": "DIFF", "noRecovery": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
Dopo aver ripristinato tutti i file di backup, utilizza il flag
recoveryOnly
per portare online il database importato dallo statoRESTORING
. Gli utenti sono vivamente invitati a non utilizzare i comandi T-SQL per portare online il database importato.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_BAK_FILE: il percorso del file BAK
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
Se visualizzi un errore come ERROR_RDBMS
, assicurati che il file BAK
esista nel bucket e di disporre delle autorizzazioni
corrette per il bucket. Per assistenza nella configurazione controllo dell'accesso dell'accesso in
Cloud Storage, consulta
Creazione e gestione degli elenchi di controllo di accesso.
Importare i backup dei log delle transazioni
Un log delle transazioni è un record delle transazioni del database e delle modifiche apportate da ciascuna transazione. Puoi utilizzarlo per ripristinare la coerenza del database in caso di guasto del sistema.
Per importare dati in un'istanza Cloud SQL utilizzando un backup del log delle transazioni, segui questi passaggi:
gcloud
(Facoltativo) Crea un bucket Cloud Storage per l'importazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
- Carica i file di backup nel bucket.
- Descrivi l'istanza in cui stai importando:
gcloud sql instances describe INSTANCE_NAME
- Copia il campo
serviceAccountEmailAddress
. - Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectViewer
ruolo IAM al account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. Importa un backup completo utilizzando il parametro
--no-recovery
. Assicurati che il database si trovi nello statoRESTORING
dopo l'importazione del backup completo.gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=FULL --no-recovery
- (Facoltativo) Importa un backup differenziale.
-
Importa un backup del log delle transazioni.
Sostituisci quanto segue:gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/BACKUP_FILENAME \ --database=DATABASE_NAME --bak-type=TLOG --stop-at=STOP_AT_TIMESTAMP --stop-at-mark=STOP_AT_MARK_NAME --no-recovery
- INSTANCE_NAME: il nome dell'istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- BACKUP_FILENAME: il nome del file di backup.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
- STOP_AT_TIMESTAMP: il timestamp in cui l'importazione del log delle transazioni deve interrompersi. Questo è un campo facoltativo e il valore deve utilizzare il formato RFC 3339.
- STOP_AT_MARK_NAME: la
transazione contrassegnata
in corrispondenza della quale deve interrompersi l'importazione del log delle transazioni. Questo è un
campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato
lsn:log-sequence-number
, l'importazione del log delle transazioni si interrompe al numero di sequenza del log specificato.
-
Dopo aver ripristinato tutti i file di backup, utilizza il flag
--recovery-only
per portare online il database importato dallo statoRESTORING
. Gli utenti sono vivamente invitati a non utilizzare i comandi T-SQL per portare online il database importato.gcloud sql import bak INSTANCE_NAME \ --database=DATABASE_NAME --recovery-only
- Se non devi conservare le autorizzazioni IAM che hai
impostato in precedenza, rimuovile utilizzando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina
instances:import.
-
Importa un backup completo con
noRecovery
. Assicurati che il database si trovi nello statoRESTORING
dopo l'importazione del backup completo.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_BAK_FILE: il percorso del file BAK.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- (Facoltativo) Importa un backup differenziale.
- Importa un backup del log delle transazioni.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_TLOG_FILE: il percorso del file di log delle transazioni.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
- STOP_AT_TIMESTAMP: il timestamp in cui l'importazione del log delle transazioni deve interrompersi. Questo è un campo facoltativo e il valore deve utilizzare il formato RFC 3339.
- STOP_AT_MARK_NAME: la
transazione contrassegnata
in corrispondenza della quale deve interrompersi l'importazione del log delle transazioni. Questo è un
campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato
lsn:log-sequence-number
, l'importazione del log delle transazioni si interrompe al numero di sequenza del log specificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_TLOG_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark": STOP_AT_MARK_NAME, "noRecovery": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
Ripeti questo passaggio finché non avrai importato tutti i backup dei log delle transazioni. Dopo aver ripristinato tutti i file di backup, utilizza il flag
recoveryOnly
per portare online il database importato dallo statoRESTORING
. Gli utenti sono vivamente invitati a non utilizzare i comandi T-SQL per portare online il database importato.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_BAK_FILE: il percorso del file BAK
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
REST v1beta4
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. -
Importa un backup completo con
noRecovery
. Assicurati che il database si trovi nello statoRESTORING
dopo l'importazione del backup completo.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT-ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_BAK_FILE: il percorso del file BAK.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "noRecovery": true, "bakType": "FULL", } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- (Facoltativo) Importa un backup differenziale.
- Importa un backup del log delle transazioni. In questo caso,
stopAt
estopAtMark
sono campi facoltativi.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage.
- PATH_TO_BAK_FILE: il percorso del file BAK.
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL.
- STOP_AT_TIMESTAMP: il timestamp in cui l'importazione del log delle transazioni deve interrompersi. Questo è un campo facoltativo e il valore deve utilizzare il formato RFC 3339.
- STOP_AT_MARK_NAME: la
transazione contrassegnata
in corrispondenza della quale deve interrompersi l'importazione del log delle transazioni. Questo è un
campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato
lsn:log-sequence-number
, l'importazione del log delle transazioni si interrompe al numero di sequenza del log specificato.
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "bakType": "TLOG", "stopAt": STOP_AT_TIMESTAMP, "stopAtMark":STOP_AT_MARK_NAME, "noRecovery": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
Ripeti questo passaggio finché non vengono importati tutti i backup dei log delle transazioni. Dopo aver ripristinato tutti i file di backup, utilizza
recoveryOnly
per portare online il database importato.Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID progetto
- INSTANCE_ID: l'ID istanza
- BUCKET_NAME: il nome del bucket Cloud Storage
- PATH_TO_BAK_FILE: il percorso del file BAK
- DATABASE_NAME: il nome di un database all'interno dell'istanza Cloud SQL
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://BUCKET_NAME/PATH_TO_BAK_FILE", "database": "DATABASE_NAME" "bakImportOptions": { "recoveryOnly": true, } } }
Per inviare la richiesta, scegli una di queste opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
, ed esegui questo comando:curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import"PowerShell
Salva il corpo della richiesta in un file denominato
request.json
, quindi esegui il comando seguente:$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/import" | Select-Object -Expand ContentDovresti ricevere una risposta JSON simile alla seguente:
- Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
Utilizzare l'importazione a strisce
I vantaggi dell'importazione a strisce sono i seguenti:
- Riduzione del tempo necessario per completare le operazioni
- È possibile importare database di dimensioni superiori a 5 TB
Un potenziale svantaggio dell'utilizzo dell'importazione a strisce è che tutti i file del set a strisce (anziché un singolo file) devono essere caricati nella stessa cartella del bucket Cloud Storage prima di eseguire l'importazione.
Pianificare le operazioni
Nella maggior parte dei casi d'uso, l'importazione a strisce consente di ottenere prestazioni migliori senza svantaggi. Tuttavia, se non riesci a eseguire il backup in un set sottoposto a striping da una determinata istanza o se il tuo database è inferiore a 5 TB e se le prestazioni più veloci non sono fondamentali, potresti utilizzare un'importazione non sottoposta a striping.
Come utilizzare l'importazione a strisce
gcloud
Crea un bucket Cloud Storage per l'importazione.
gcloud storage buckets create gs://BUCKET_NAME --location=LOCATION_NAME --project=PROJECT_NAME
Questo passaggio non è obbligatorio, ma è fortemente consigliato per evitare di aprire l'accesso ad altri dati.
- Assicurati di aver configurato i ruoli e le autorizzazioni IAM richiesti.
- Crea una nuova cartella nel bucket.
- Per importare il database, carica i file del set suddiviso (del database) nella nuova cartella. Assicurati che tutti i file vengano caricati nella cartella e che quest'ultima non contenga file aggiuntivi.
- Descrivi l'istanza da cui stai esportando:
gcloud sql instances describe INSTANCE_NAME
- Copia il campo
serviceAccountEmailAddress
. - Utilizza
gcloud storage buckets add-iam-policy-binding
per concedere ilstorage.objectViewer
ruolo IAM al account di servizio per il bucket. Per maggiori informazioni sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dalla cartella. La differenza rispetto a un'importazione non a strisce è la seguente: l'URI rimanda al nome della cartella in cui è stato caricato il set di strisce, anziché a un singolo file, e devi specificare il parametro
--striped
:gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \ --database=DATABASE_NAME --striped
- Se non devi conservare le autorizzazioni IAM che hai
impostato in precedenza, rimuovile utilizzando
gcloud storage buckets remove-iam-policy-binding
.
REST v1
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dal file:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_folder: il percorso della cartella (nel bucket Cloud Storage) in cui si trova il set di strisce
- database_name: il nome di un database da creare nell'istanza Cloud SQL
- true | false: imposta su
true
per utilizzare l'importazione a strisce
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
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 per la richiesta, consulta la pagina instances:import.importContext.importUser
. - Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
REST v1beta4
- Crea un bucket Cloud Storage.
Carica il file nel bucket.
Per assistenza con il caricamento di file nei bucket, consulta Caricamento di oggetti.
- Fornisci all'istanza il
storage.objectAdmin
ruolo IAM per il tuo bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM. - Importa i dati dal file:
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- project-id: l'ID progetto
- instance-id: l'ID istanza
- bucket_name: il nome del bucket Cloud Storage
- path_to_folder: il percorso della cartella (nel bucket Cloud Storage) in cui si trova il set di strisce
- database_name: il nome di un database da creare nell'istanza Cloud SQL
- true | false: imposta su
true
per utilizzare l'importazione a strisce
Metodo HTTP e URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/import
Corpo JSON della richiesta:
{ "importContext": { "fileType": "BAK", "uri": "gs://bucket_name/path_to_folder", "database": "database_name", "bakImportOptions": { "striped": true | false } } }
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 per la richiesta, consulta la pagina instances:import.importContext.importUser
. - Se non devi conservare le autorizzazioni IAM che hai impostato in precedenza, rimuovile.
Se viene visualizzato un errore come ERROR_RDBMS
, assicurati che la tabella
esista. Se la tabella esiste, verifica di disporre delle autorizzazioni corrette per il bucket. Per assistenza nella configurazione controllo dell'accesso dell'accesso in
Cloud Storage, consulta
Creazione e gestione degli elenchi di controllo di accesso.
Passaggi successivi
- Scopri come controllare lo stato delle operazioni di importazione ed esportazione.
- Scopri di più sulle best practice per l'importazione e l'esportazione dei dati.
- Problemi noti per importazioni ed esportazioni.