Esportazione e importazione mediante file BAK e file di log delle transazioni

Questa pagina descrive l'esportazione e l'importazione dei dati nelle istanze Cloud SQL utilizzando file BAK e importazione di dati nelle istanze Cloud SQL utilizzando i file di log delle transazioni.

Prima di iniziare

Le esportazioni utilizzano risorse di database, ma le esportazioni non interferiscono con le normali a meno che l'istanza non abbia un provisioning insufficiente.

Per le best practice, vedi Best practice per l'importazione e Esportazione dei dati.

Dopo aver completato un'operazione di importazione, verifica il che consentono di analizzare i dati e visualizzare i risultati.

Esporta 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, prendi in considerazione ripristino da un backup a un'altra istanza o clonando 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 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:

  • Ruolo di Identity and Access Management (IAM) di storage.objectAdmin
  • Un ruolo personalizzato che includa le seguenti autorizzazioni:
    • storage.objects.create
    • storage.objects.list (solo per l'esportazione con striping)
    • storage.objects.delete (solo per l'esportazione con striping)

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

Esporta i dati in un file BAK da Cloud SQL per SQL Server

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Esporta.
  4. Nella sezione Formato file, fai clic su BAK.
  5. Nella sezione Dati da esportare, utilizza il menu a discesa per selezionare il valore da cui eseguire l'esportazione.
  6. Nella sezione Destinazione, seleziona Sfoglia per cercare un il bucket o la cartella Cloud Storage per l'esportazione.
  7. Fai clic su Esporta per avviare l'esportazione.

gcloud

  1. crea un bucket Cloud Storage.
  2. Trova l'account di servizio per l'istanza Cloud SQL che stai esportando da cui proviene. Puoi farlo eseguendo gcloud sql instances describe . Cerca il campo serviceAccountEmailAddress nella come output.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam per concedere storage.objectAdmin Ruolo IAM all'account di servizio. Per saperne di più sull'impostazione di IAM autorizzazioni, consulta Utilizzo delle autorizzazioni IAM.
  4. Esporta il database:
    gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/FILENAME \
    --database=DATABASE_NAME
      

    Per informazioni sull'utilizzo del gcloud sql export bak , consulta le pagina di riferimento del comando.

  5. Se non hai bisogno di mantenere il ruolo IAM impostato in precedenza, quindi revoke ora.

REST v1

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM legacyBucketWriter per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, effettua 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: abilita l'esportazione serverless. Imposta true su e usare 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
        }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Se non hai bisogno di mantenere il ruolo IAM, impostato in precedenza, poi rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

REST v1beta4

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM storage.objectAdmin per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, effettua 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: abilita l'esportazione serverless. Imposta true su e usare l'esportazione serverless.

    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
        }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Se non hai bisogno di mantenere il ruolo IAM impostato in precedenza, quindi revoke ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

Esporta backup differenziali dei database

Prima di esportare un backup differenziale di database, devi esportare una base differenziale.

Se altri servizi o funzionalità, come il recupero point-in-time e la replica di lettura, attivare un backup completo tra l'esportazione del backup completa e l'esportazione del backup differenziale devi attivare di nuovo un'esportazione di backup completa.

Per comprendere meglio questo concetto, considera l'esempio seguente:

  1. Devi inviare una richiesta di backup completo alle 07:00.
  2. Attiverai il recupero point-in-time alle 09:00. Questa operazione attiva un backup completo in esecuzione in un'istanza Compute Engine.
  3. Provi a eseguire un backup differenziale alle 17:00. Questa richiesta di esportazione non va a buon fine con un messaggio di errore perché l'ultimo backup completo è stato attivato dal recupero point-in-time.

Cloud SQL non supporta le richieste di esportazione dei database con --differential-base o --bak-type=DIFF sulle istanze di replica.

gcloud

  1. Creare un bucket Cloud Storage.
  2. Trova l'account di servizio per l'istanza Cloud SQL da cui stai eseguendo l'esportazione. Puoi farlo eseguendo gcloud sql instances describe . Cerca il campo serviceAccountEmailAddress nella come output.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Usa gsutil iam per concedere storage.objectAdmin Ruolo IAM all'account di servizio. Per saperne di più sull'impostazione di IAM autorizzazioni, consulta Utilizzo delle autorizzazioni IAM.
  4. 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 gcloud sql export bak , consulta le pagina di riferimento del comando.

  5. 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 gcloud sql export bak , consulta le pagina di riferimento del comando.

  6. Se non hai bisogno di mantenere il ruolo IAM impostato in precedenza, quindi revoke ora.

REST v1

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM legacyBucketWriter per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il backup completo del database come base differenziale.

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

    • project-id: 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 l'esportazione serverless, imposta il 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_dump_file",
          "databases": ["database_name"]
          "offload": true | false
          "bakExportOptions": {
            "differentialBase":true
          }
    
        }
    }
    

    Per inviare la richiesta, scegli una delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Esporta un backup differenziale.

    Prima di utilizzare i dati della richiesta, effettua 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: abilita l'esportazione serverless. Imposta true su e usare 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Se non hai bisogno di mantenere il ruolo IAM, impostato in precedenza, poi rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

REST v1beta4

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM storage.objectAdmin per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il backup completo del database come base differenziale.

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

    • project-id: 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 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Esporta un backup differenziale:

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

    • project-id: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Se non hai bisogno di mantenere il ruolo IAM impostato in precedenza, quindi revoke ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

Usa esportazione con striping

I vantaggi dell'esportazione con striping sono i seguenti:

  • Riduzioni del tempo necessario al completamento delle operazioni
  • È possibile esportare database più grandi di 5 TB

Uno svantaggio potenziale dell'uso dell'esportazione con striping è che la copia di backup, invece di costituito da un file, è suddiviso tra un insieme di file. Questo insieme è chiamato "set di strisce"; vedi Dispositivi di backup in un set di contenuti multimediali a strisce (set di stripe). In Cloud SQL, l'esportazione viene eseguita in una cartella vuota in Cloud Storage, invece di generare un singolo file. Per ulteriori informazioni, vedi Come utilizzare l'esportazione con striping.

Pianificazione delle operazioni

L'esportazione con striping può migliorare il rendimento delle esportazioni. Tuttavia, se utilizzi richiede un singolo file di output o se le dimensioni del database siano inferiori a 5 TB e, se le prestazioni non sono e critici, ti consigliamo di utilizzare un'esportazione senza strisce.

Se decidi di utilizzare l'esportazione a righe, considera l'utilizzo numero di strisce. Puoi specificare questo valore nel tuo il comando gcloud CLI o la chiamata API REST. Tuttavia, se si desidera un numero ottimale strisce per migliorare le prestazioni oppure, se non conosci un numero, omettilo. Viene impostato automaticamente un numero ottimale di strisce.

Il numero massimo di strisce attualmente supportate da Cloud SQL per SQL Server è il numero 64.

Come utilizzare l'esportazione con striping

gcloud

  1. Creare un bucket Cloud Storage.
  2. Trova l'account di servizio per l'istanza Cloud SQL che stai esportando da cui proviene. Puoi farlo eseguendo Comando gcloud sql instances describe. Cerca l'icona serviceAccountEmailAddress nell'output.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilizza gsutil iam per concedere il ruolo IAM storage.objectAdmin a l'account di servizio. Per saperne di più sull'impostazione di IAM autorizzazioni, consulta Utilizzo delle autorizzazioni IAM.
  4. Per esportare il database, specifica il parametro --striped e/o specifica un valore per --stripe_count. Impostazione di un valore per --stripe_count implica che il parametro --striped sia intenzionale. Errore si verifica 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 gcloud beta sql export bak , consulta le pagina di riferimento del comando.

  5. Se non hai bisogno di mantenere il ruolo IAM impostato in precedenza, quindi revocarla ora.

REST v1

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM legacyBucketWriter per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, effettua 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 esporta l'insieme rigato in
    • database_name: il nome di un database nella tua istanza Cloud SQL
    • true | false: imposta su true per utilizzare l'esportazione con strisce. Se specifichi true senza specificare un numero di strisce, viene calcolato un numero ottimale di strisce viene impostato automaticamente
    • number_of_stripes: il numero di strisce da utilizzare. Se specificato, striped è implicito come 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_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Se non hai bisogno di mantenere il ruolo IAM, impostato in precedenza, poi rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

REST v1beta4

  1. Crea un bucket Cloud Storage per l'esportazione.
    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma è vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Fornisci alla tua istanza il ruolo IAM legacyBucketWriter per del bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzare Autorizzazioni IAM.
  3. Esporta il database:

    Prima di utilizzare i dati della richiesta, effettua 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 esporta il set a righe
    • database_name: il nome di un database nella tua istanza Cloud SQL
    • true | false: imposta su true per utilizzare l'esportazione con strisce. Se specifichi true senza specificare un numero di strisce, viene calcolato un numero ottimale di strisce viene impostato automaticamente
    • number_of_stripes: il numero di strisce da utilizzare. Se specificato, striped è implicito come 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_folder",
          "databases": ["database_name"],
          "bakExportOptions": {
            "striped": true | false,
            "stripe_count": ["number_of_stripes"]
          }
        }
    }
    

    Per inviare la richiesta, espandi una delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  4. Se non hai bisogno di mantenere il ruolo IAM, impostato in precedenza, poi rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, vedi instances:export.

Importa in Cloud SQL per SQL Server

Ruoli e autorizzazioni richiesti per l'importazione in Cloud SQL per SQL Server

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

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

  • Il ruolo IAM storage.objectAdmin
  • Un ruolo personalizzato che includa le seguenti autorizzazioni:
    • storage.objects.get
    • storage.objects.list (solo per l'importazione a righe)

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

Importa i dati da un file BAK a Cloud SQL per SQL Server

Per utilizzare l'importazione con strisce, vedi Utilizzare l'importazione con 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

Quando si importa un database abilitato CDC, il parametro 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 file BAK criptati, ma solo tramite gcloud CLI.

Le uniche estensioni BAK supportate sono .bak e .bak.gz. Backup criptati da GPG non sono attualmente supportati.

Per le istruzioni riportate di seguito, preparati a specificare un nuovo database. non devi crea un database prima di iniziare l'importazione del file BAK.

Per importare i dati in un'istanza Cloud SQL utilizzando un file BAK:

Console

  1. Nella console Google Cloud, vai alla pagina Istanze Cloud SQL.

    Vai a Istanze Cloud SQL

  2. Per aprire la pagina Panoramica di un'istanza, fai clic sul nome dell'istanza.
  3. Fai clic su Importa.
  4. Nel campo Scegli il file da cui importare i dati, inserisci il percorso del bucket e del file BAK da utilizzare per l'importazione.

    Puoi importare un file compresso (.gz) o non compresso .

  5. Nella sezione Formato, seleziona BAK.
  6. Specifica il campo Database in l'istanza Cloud SQL in cui vuoi importare il file BAK.
  7. Fai clic su Importa per avviare l'importazione.

gcloud

  1. Crea un bucket Cloud Storage per l'importazione.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Assicurati di aver configurato i ruoli e le autorizzazioni richiesti.
  3. Carica i dati dal file BAK al bucket.
  4. Descrivi l'istanza in cui esegui l'importazione:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copia il campo serviceAccountEmailAddress.
  6. Usa gsutil iam per concedere storage.objectViewer Ruolo IAM all'account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  7. Importa i dati dal file:
    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/FILE_NAME \
    --database=DATABASE_NAME
    
    Per le importazioni criptate, utilizza il comando seguente:
    
    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
    
  8. Se non devi conservare le autorizzazioni IAM, impostati in precedenza, quindi rimuovili utilizzando gsutil iam.

REST v1

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa i dati dal file:

    Prima di utilizzare i dati della richiesta, effettua 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: 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per utilizzare un utente diverso per l'importazione, specifica importContext.importUser proprietà.

    Per l'elenco completo dei parametri per la richiesta, vedi instances:import.
  5. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

REST v1beta4

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa i dati dal file:

    Prima di utilizzare i dati della richiesta, effettua 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: 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per utilizzare un utente diverso per l'importazione, specifica importContext.importUser proprietà.

    Per l'elenco completo dei parametri per la richiesta, vedi instances:import.
  5. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

Se ricevi un messaggio di errore come ERROR_RDBMS, assicurati che il codice BAK esiste nel bucket e il file è corretto autorizzazioni per il bucket. Per assistenza sulla configurazione controllo dell'accesso in Cloud Storage, consulta Creare e gestire gli elenchi di controllo dell'accesso.

Importa backup differenziali dei database

Prima di importare un backup differenziale di database, devi eseguire un'importazione di 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 dei database su istanze abilitate con recupero point-in-time. Questo perché l'importazione di un backup di database con --no-recovery è un prerequisito per l'importazione di backup differenziali dei database. Inoltre, non puoi abilitare il recupero point-in-time su un'istanza se il database è in stato RESTORING. In caso di importazione non riuscita, esegui una delle seguenti operazioni per abilitare il recupero point-in-time:

  • Porta online il database nello stato RESTORING utilizzando il flag --recovery-only .

  • Rimuovi il database.

Per importare i dati in un'istanza Cloud SQL utilizzando un backup differenziale di database, segui questi passaggi:

gcloud

  1. Crea un bucket Cloud Storage per l'importazione.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma ti consigliamo vivamente di eseguirlo per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Assicurati di aver configurato i ruoli e le autorizzazioni richiesti.
  3. Carica i dati dal file BAK al bucket.
  4. Descrivi l'istanza in cui esegui l'importazione:
    gcloud sql instances describe INSTANCE_NAME
    
  5. Copia il campo serviceAccountEmailAddress.
  6. Usa gsutil iam per concedere storage.objectViewer Ruolo IAM all'account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  7. 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
    
  8. Importa un backup differenziale di un database.

    gcloud sql import bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
    --database=DATABASE_NAME --bak-type=DIFF --no-recovery
    
  9. Utilizza il flag --recovery-only per portare online il database importato. Questo passaggio è facoltativo e devi eseguirlo solo se il database è nello stato RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Se non devi conservare le autorizzazioni IAM, impostati in precedenza, quindi rimuovili utilizzando gsutil iam.

REST v1

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa un backup completo con noRecovery.

    Prima di utilizzare i dati della richiesta, effettua 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Importa un backup differenziale di un database.

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

    • project-id: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  6. Usa recoveryOnly per portare online il database importato. Questo passaggio è facoltativo e devi eseguirlo solo se il database è nello stato RESTORING.

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

    • PROJECT_ID: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  7. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

REST v1beta4

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa un backup completo con noRecovery.

    Prima di utilizzare i dati della richiesta, effettua 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Importa un backup differenziale di un database.

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

    • project-id: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  6. Usa recoveryOnly per portare online il database importato. Questo passaggio è facoltativo e devi eseguirlo solo se il database è nello stato RESTORING.

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

    • PROJECT_ID: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  7. Se non devi conservare le autorizzazioni IAM, impostate in precedenza, rimuovi le autorizzazioni.

Se ricevi un messaggio di errore come ERROR_RDBMS, assicurati che il file BAK esiste nel bucket e il file è corretto autorizzazioni per il bucket. Per assistenza sulla configurazione controllo dell'accesso in Cloud Storage, consulta Creare e gestire gli elenchi di controllo dell'accesso.

Importa backup dei log delle transazioni

Un log delle transazioni. è un record delle transazioni del database e delle modifiche apportate da ogni transazione. Puoi utilizzarlo per ristabilire la coerenza del database in caso di errore del sistema.

Per importare i dati in un'istanza Cloud SQL utilizzando il backup di un log delle transazioni, segui questi passaggi:

gcloud

  1. (Facoltativo) Crea un bucket Cloud Storage per l'importazione.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    
  2. Carica i file di backup nel bucket.
  3. Descrivi l'istanza in cui esegui l'importazione:
    gcloud sql instances describe INSTANCE_NAME
    
  4. Copia il campo serviceAccountEmailAddress.
  5. Usa gsutil iam per concedere storage.objectViewer Ruolo IAM all'account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  6. Importa un backup completo utilizzando il parametro --no-recovery. Assicurati che il database si trovi nella zona RESTORING 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
    
  7. (Facoltativo) Importa un backup differenziale.
  8. Importa un backup del log delle transazioni.

    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
    
    Sostituisci quanto segue:
    • 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 deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e il valore Deve utilizzare il formato RFC 3339.
    • STOP_AT_MARK_NAME: il transazione contrassegnata in cui deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato lsn:log-sequence-number, il file di importazione dei log delle transazioni si ferma al specificato numero di sequenza di log.
    Ripeti questo passaggio finché non vengono importati tutti i backup dei log delle transazioni.
  9. (Facoltativo) Utilizza il flag --recovery-only per portare online il database importato. Esegui questo passaggio solo se il database è nello stato RESTORING.

    gcloud sql import bak INSTANCE_NAME \
    --database=DATABASE_NAME --recovery-only
    
  10. Se non devi conservare le autorizzazioni IAM, impostati in precedenza, quindi rimuovili utilizzando gsutil iam.

REST v1

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Per l'elenco completo dei parametri per la richiesta, vedi instances:import.
  5. Importa un backup completo con noRecovery. Assicurati che il database si trovi nella zona RESTORING dopo l'importazione del backup completo.

    Prima di utilizzare i dati della richiesta, effettua 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  6. (Facoltativo) Importa un backup differenziale.
  7. Importa un backup del log delle transazioni.

    Prima di utilizzare i dati della richiesta, effettua 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 deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e il valore Deve utilizzare il formato RFC 3339.
    • STOP_AT_MARK_NAME: il transazione contrassegnata in cui deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato lsn:log-sequence-number, il file di importazione dei log delle transazioni si ferma al specificato numero di sequenza di log.

    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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    . Ripeti questo passaggio finché non vengono importati tutti i backup dei log delle transazioni.
  8. (Facoltativo) Utilizza recoveryOnly per portare online il database importato. Esegui questo passaggio solo se il database è nello stato RESTORING.

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

    • PROJECT_ID: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  9. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

REST v1beta4

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa un backup completo con noRecovery. Assicurati che il database si trovi nella zona RESTORING dopo l'importazione del backup completo.

    Prima di utilizzare i dati della richiesta, effettua 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. (Facoltativo) Importa un backup differenziale.
  6. Importa un backup del log delle transazioni. Qui, stopAt e stopAtMark sono campi facoltativi.

    Prima di utilizzare i dati della richiesta, effettua 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 deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e il valore Deve utilizzare il formato RFC 3339.
    • STOP_AT_MARK_NAME: il transazione contrassegnata in cui deve interrompersi l'importazione del log delle transazioni. Si tratta di un campo facoltativo e può assumere qualsiasi stringa come valore. Se il valore è nel formato lsn:log-sequence-number, il file di importazione dei log delle transazioni si ferma al specificato numero di sequenza di log.

    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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

    . Ripeti questo passaggio finché non vengono importati tutti i backup dei log delle transazioni.
  7. (Facoltativo) Utilizza recoveryOnly per portare online il database importato. Esegui questo passaggio solo se il database è nello stato RESTORING.

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

    • PROJECT_ID: 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 delle seguenti 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. ed esegui questo comando:

    $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 Content

    Dovresti ricevere una risposta JSON simile alla seguente:

  8. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

Usa importazione a righe

I vantaggi dell'importazione con striping sono i seguenti:

  • Riduzioni del tempo necessario al completamento delle operazioni
  • È possibile importare database di dimensioni superiori a 5 TB

Uno svantaggio potenziale dell'uso dell'importazione con striping è che tutti i file nel l'insieme di striping (piuttosto che un singolo file) deve essere caricato nella stessa cartella del bucket Cloud Storage, prima di eseguire l'importazione.

Pianificazione delle operazioni

Nella maggior parte dei casi d'uso, l'importazione con striping consente di migliorare le prestazioni senza svantaggi. Se invece non riesci a eseguire il backup su un set a righe di un determinato o se il database è inferiore a 5 TB e se le prestazioni sono non critico, ti consigliamo di utilizzare un'importazione senza righe.

Come utilizzare l'importazione a righe

gcloud

  1. Crea un bucket Cloud Storage per l'importazione.

    gsutil mb -p PROJECT_NAME -l LOCATION_NAME gs://BUCKET_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato, per evitare di aprire l'accesso a qualsiasi altro dato.

  2. Assicurati di aver configurato i ruoli e le autorizzazioni IAM richiesti.
  3. Crea una nuova cartella nel tuo bucket.
  4. Per importare il database, Caricare i file del set di striping (del database) nella nuova cartella. Assicurati che tutti i file siano caricati nella cartella e che la cartella non contiene file aggiuntivi.
  5. Descrivi l'istanza da cui esegui l'esportazione:
    gcloud sql instances describe INSTANCE_NAME
    
  6. Copia il campo serviceAccountEmailAddress.
  7. Usa gsutil iam per concedere storage.objectViewer . ruolo IAM all'account di servizio per il bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  8. Importa i dati dalla cartella. La differenza da un'importazione senza strisce è quanto segue: l'URI rimanda al nome della cartella alla quale lo stripe è stato caricato, invece che in un singolo file e specifichi Parametro --striped:
    gcloud beta sql import bak INSTANCE_NAME gs://BUCKET_NAME/FOLDER_NAME \
    --database=DATABASE_NAME --striped
    
  9. Se non devi conservare le autorizzazioni IAM, impostate in precedenza, quindi rimuovile gsutil iam.

REST v1

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa i dati dal file:

    Prima di utilizzare i dati della richiesta, effettua 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 l'insieme stripe è localizzato
    • database_name: il nome di un database da creare nella tua istanza Cloud SQL
    • true | false: imposta su true per utilizzare l'importazione con 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per utilizzare un utente diverso per l'importazione, specifica importContext.importUser proprietà.

    Per l'elenco completo dei parametri per la richiesta, vedi instances:import.
  5. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

REST v1beta4

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

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

  3. Fornisci alla tua istanza storage.objectAdmin ruolo IAM per di sincronizzare la directory di una VM con un bucket. Per saperne di più sull'impostazione delle autorizzazioni IAM, consulta Utilizzo delle autorizzazioni IAM.
  4. Importa i dati dal file:

    Prima di utilizzare i dati della richiesta, effettua 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 stripe
    • database_name: il nome di un database da creare nella tua istanza Cloud SQL
    • true | false: imposta su true per utilizzare l'importazione con 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 delle seguenti opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per utilizzare un utente diverso per l'importazione, specifica importContext.importUser proprietà.

    Per l'elenco completo dei parametri per la richiesta, vedi instances:import.
  5. Se non devi conservare le autorizzazioni IAM, che hai impostato in precedenza, quindi rimuovi le autorizzazioni.

Se visualizzi un errore come ERROR_RDBMS, assicurati che la tabella esiste già. Se la tabella esiste, verifica di avere i dati corretti autorizzazioni per il bucket. Per assistenza sulla configurazione controllo dell'accesso in Cloud Storage, consulta Creare e gestire gli elenchi di controllo dell'accesso.

Passaggi successivi