Esportazione e importazione mediante file di dump SQL

Questa pagina descrive l'esportazione e l'importazione di dati nelle istanze Cloud SQL mediante file di dump SQL.

Prima di iniziare

Le esportazioni utilizzano le risorse del database, ma non interferiscono con le normali operazioni del database, a meno che l'istanza non sia sottodimensionata.

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 MySQL

Ruoli e autorizzazioni richiesti per l'esportazione da Cloud SQL per MySQL

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

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

  • Il ruolo storage.objectAdmin Identity and Access Management (IAM)
  • Un ruolo personalizzato, che include le seguenti autorizzazioni:
    • storage.objects.create
    • storage.objects.list (solo per l'esportazione dei file in parallelo)
    • storage.objects.delete (solo per l'esportazione dei file in parallelo)

Per assistenza sui ruoli IAM, consulta Identity and Access Management.

Esportazione in un file di dump SQL da Cloud SQL per MySQL

Per creare un file di dump SQL, esporta i dati da Cloud SQL in Cloud Storage. Una volta che il file è in Cloud Storage, puoi importarlo in un altro database Cloud SQL. Puoi anche scaricare i dati da Cloud Storage nel tuo ambiente locale se vuoi accedervi localmente.

L'esportazione da Cloud SQL utilizza l'utilità mysqldump con le opzioni --single-transaction e --hex-blob. Con l'opzione --single-transaction, mysqldump avvia una transazione prima dell'esecuzione. Invece di bloccare l'intero database, consente a mysqldump di leggerlo nello stato corrente, generando un dump dei dati coerente.

Se il file di dump SQL contiene clausole DEFINER (viste, trigger, stored_procedure e così via), a seconda dell'ordine di esecuzione di queste istruzioni, l'utilizzo di questo file per l'importazione potrebbe non riuscire. Scopri di più sull'utilizzo di DEFINER e su potenziali soluzioni alternative in Cloud SQL.

Per esportare i dati da un database su un'istanza Cloud SQL in un file di dump SQL in un bucket Cloud Storage:

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 SQL per creare un file di dump SQL.
  5. Nella sezione Dati da esportare, fai clic su Uno o più database in questa istanza per esportare database specifici.
  6. Utilizza il menu a discesa per selezionare i database da cui vuoi esportare i dati.
  7. Nella sezione Destinazione, seleziona Sfoglia per cercare un bucket o una cartella Cloud Storage per l'esportazione.
  8. Fai clic su Esporta per avviare l'esportazione.

gcloud

  1. Crea un bucket Cloud Storage.
  2. Trova l'account di servizio dell'istanza Cloud SQL da cui stai esportando. A tale scopo, puoi eseguire il comando gcloud sql instances describe. Cerca il campo serviceAccountEmailAddress nell'output.
    gcloud sql instances describe INSTANCE_NAME
      
  3. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il ruolo IAM storage.objectAdmin all'account di servizio. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  4. Esporta il database nel bucket Cloud Storage:
    gcloud sql export sql INSTANCE_NAME gs://BUCKET_NAME/sqldumpfile.gz \
    --database=DATABASE_NAME \
    --offload
      

    Il comando export sql non contiene trigger o procedure memorizzate, ma contiene visualizzazioni. Per esportare gli attivatori e/o le procedure memorizzate, utilizza lo strumento mysqldump.

    Per ulteriori informazioni sull'utilizzo del comando export sql, consulta la pagina di riferimento del comando sql export sql.

  5. Se non devi conservare il ruolo IAM impostato in precedenza, revocation.

REST v1

  1. Crea un bucket per l'esportazione:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME

    Questo passaggio non è obbligatorio, ma vivamente consigliato per non consentire l'accesso ad altri dati.

  2. Fornisci all'istanza il legacyBucketWriter ruolo IAM per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  3. 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
  4. Metodo HTTP e URL:

    POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_ID/export

    Corpo JSON della richiesta:

    {
     "exportContext":
       {
          "fileType": "SQL",
          "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
          "databases": ["DATABASE_NAME"],
          "offload": TRUE | FALSE
        }
    }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Se non devi conservare il ruolo IAM impostato in precedenza, rimuovilo ora.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:export.

REST v1beta4

  1. Crea un bucket per l'esportazione:
    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_NAME --location=LOCATION_NAME
    

    Questo passaggio non è obbligatorio, ma vivamente consigliato per non consentire l'accesso ad altri dati.

  2. Fornisci all'istanza il storage.objectAdmin ruolo IAM per il tuo bucket. Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  3. 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
  4. Metodo HTTP e URL:

    POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID/export

    Corpo JSON della richiesta:

    {
      "exportContext":
        {
           "fileType": "SQL",
           "uri": "gs://BUCKET_NAME/PATH_TO_DUMP_FILE",
           "databases": ["DATABASE_NAME"],
           "offload": TRUE | FALSE
         }
     }
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

  5. Se non devi conservare il ruolo IAM impostato in precedenza, revocarlo ora.
Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:export.

Esportazione dal server MySQL locale utilizzando mysqldump

Se esporti i dati da un database MySQL on-premise per importarli in un database Cloud SQL, devi utilizzare l'utilità mysqldump con i seguenti flag:

  • --databases Devi utilizzare l'opzione --databases per specificare un elenco esplicito dei database da esportare e questo elenco non deve contenere il database di sistema mysql.
  • --hex-blob Se il database contiene campi binari, devi utilizzare questo flag per assicurarti che vengano importati correttamente.
  • --set-gtid-purged=OFF Le informazioni GTID non devono essere incluse nel file di dump SQL e il logging binario non deve essere disattivato dal file di dump SQL. (Non richiesto per MySQL 5.5 o la replica esterna).
  • --single-transaction Avvia una transazione prima dell'esecuzione. Invece di bloccare l'intero database, in questo modo mysqldump può leggere il database nello stato corrente, generando un dump di dati coerente.

Da una riga di comando, esegui mysqldump:

mysqldump --databases DATABASE_NAME -h INSTANCE_IP -u USERNAME -p \
--hex-blob --single-transaction --set-gtid-purged=OFF \
--default-character-set=utf8mb4 > SQL_FILE.sql

Per assistenza su mysqldump, consulta la documentazione di riferimento di mysqldump.

Replica esterna a Cloud SQL per MySQL

Per creare un file dump da utilizzare in una configurazione del server esterno, consulta Replica da un server esterno.

Importare dati in Cloud SQL per MySQL

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

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

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

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

Per assistenza sui ruoli IAM, consulta Identity and Access Management.

Importare un file di dump SQL in Cloud SQL per MySQL

I file SQL sono file di testo normale con una sequenza di comandi SQL.

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. Nella sezione Scegli il file da cui vuoi importare i dati, inserisci il percorso del bucket e del file di dump SQL da utilizzare per l'importazione oppure vai a un file esistente.

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

  5. Per Formato, seleziona SQL.
  6. Seleziona il database in cui vuoi importare i dati.

    In questo modo, Cloud SQL esegue l'istruzione USE DATABASE prima dell'importazione.

  7. Se vuoi specificare un utente che esegua l'importazione, selezionalo.

    Se il file di importazione contiene istruzioni che devono essere eseguite da un utente specifico, utilizza questo campo per specificarlo.

  8. Fai clic su Importa per avviare l'importazione.

gcloud

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

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

  3. Descrivi l'istanza in cui stai eseguendo l'importazione:
    gcloud sql instances describe INSTANCE_NAME
  4. Copia il campo serviceAccountEmailAddress.
  5. Utilizza gcloud storage buckets add-iam-policy-binding per concedere il ruolo IAM storage.objectAdmin all'account di servizio per il bucket.
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
      --member=serviceAccount:SERVICE-ACCOUNT \
      --role=roles/storage.objectAdmin
      
    Per assistenza sull'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  6. Importa il database:
    gcloud sql import sql INSTANCE_NAME gs://BUCKET_NAME/IMPORT_FILE_NAME \
    --database=DATABASE_NAME

    Per informazioni sull'utilizzo del comando import sql, consulta la pagina di riferimento del comando sql import sql.

    Se il comando restituisce un errore come ERROR_RDBMS, controlla le autorizzazioni. Questo errore è spesso dovuto a problemi di autorizzazione.

  7. Se non devi conservare le autorizzazioni IAM impostate in precedenza, rimuovile utilizzando gcloud storage buckets remove-iam-policy-binding.

REST v1

  1. Crea un file di dump SQL. Le istruzioni collegate impostano determinati flag che rendono il file dump compatibile con Cloud SQL.

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

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

  4. Fornisci all'istanza i ruoli IAM legacyBucketWriter e objectViewer per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  5. Importa il file dump:

    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_sql_file: il percorso del file SQL
    • 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": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:import.
  6. Se non devi conservare le autorizzazioni IAM impostate in precedenza, rimuovile ora.

REST v1beta4

  1. Crea un file di dump SQL. Le istruzioni collegate impostano determinati flag che rendono il file dump compatibile con Cloud SQL.

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

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

  4. Fornisci all'istanza il ruolo IAM storage.objectAdmin per il tuo bucket. Per assistenza con l'impostazione delle autorizzazioni IAM, consulta Utilizzare le autorizzazioni IAM.
  5. Importa il file dump:

    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_sql_file: il percorso del file SQL
    • 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": "SQL",
          "uri": "gs://bucket_name/path_to_sql_file",
          "database": "database_name"
        }
    }
    
    

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    Per l'elenco completo dei parametri per la richiesta, consulta la pagina instances:import.
  6. Se non devi conservare le autorizzazioni IAM impostate in precedenza, rimuovile ora.

Passaggi successivi