Esegui la migrazione a Cloud SQL da un file fisico XtraBackup

Questa pagina descrive come eseguire la migrazione di un database MySQL da un server esterno a Cloud SQL utilizzando un file fisico Percona XtraBackup per MySQL.

Cloud SQL supporta la migrazione dei database MySQL su server esterni alle istanze Cloud SQL per MySQL utilizzando Percona XtraBackup. Vengono generate risorse fisiche con l'utilità XtraBackup e poi caricarli sul di archiviazione ideale in Cloud Storage. Utilizzando i file fisici, puoi migliorare la velocità complessiva della migrazione fino a 10 volte rispetto a una normale migrazione basata su file di dump logici.

Cloud SQL supporta la migrazione fisica basata su file per MySQL 5.7 e 8.0. MySQL 5.6 e 8.4 non sono supportati. Migrazione da Amazon Aurora o MySQL su database Amazon RDS non è supportato. Inoltre, l'istanza di replica di destinazione in Cloud SQL per MySQL deve essere installata con la stessa versione principale di MySQL del server esterno. Tuttavia, la replica di destinazione può utilizzare una versione minore successiva. Ad esempio, se il tuo database esterno utilizza MySQL 8.0.31, la replica di destinazione deve essere Cloud SQL per MySQL versione 8.0.31 o successiva.

Prima di iniziare

Questa sezione illustra i passaggi da seguire prima di eseguire la migrazione del database MySQL a Google Cloud.

Configura un progetto Google Cloud

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. Assicurati di disporre dei ruoli Amministratore Cloud SQL, Amministratore di archiviazione e visualizzatore di Compute nel tuo account utente.

    Vai alla pagina IAM

Configura un bucket Cloud Storage

Se non l'hai ancora fatto, crea un bucket Cloud Storage.

Installa Google Cloud SDK

Per utilizzare i comandi gcloud CLI sul tuo server esterno, installare Google Cloud SDK.

Prepara il server esterno per la migrazione

  1. Installa una delle seguenti versioni dell'utilità XtraBackup sul server esterno.

    Per MySQL 8.0, devi installare una versione di XtraBackup uguale o superiore alla versione del server di origine. Per ulteriori informazioni, consulta Confronto tra la versione del server e la versione del backup nella documentazione di Percona XtraBackup.

  2. Assicurati che il server esterno soddisfi tutti i requisiti necessari per la replica. Per ulteriori informazioni, consulta Configurare il server esterno per la replica.

    Oltre ai requisiti del server esterno per la replica, la migrazione da un file fisico XtraBackup presenta i seguenti requisiti:

    • Il database MySQL deve essere un database on-premise o autogestito MySQL su una VM Compute Engine. Migrazione da Amazon Aurora o MySQL su database Amazon RDS non è supportato.
    • Devi configurare il parametro innodb_data_file_path con un solo file di dati che utilizza il nome file di dati predefinito ibdata1. Se il database è configurato con due file di dati o ha un file di dati con con un nome diverso, non potrai eseguire la migrazione del database utilizzando file fisico. Ad esempio, un database configurato con innodb_data_file_path=ibdata01:50M:autoextend non supportato per la migrazione.
    • Il parametro innodb_page_size nel database esterno di origine deve essere configurato con il valore predefinito 16384.
  3. Se non ne hai già configurato uno, crea un account utente di replica. Sono necessari il nome utente e la password associati a questo account utente.

Esegui la migrazione

Completa tutti i passaggi descritti nelle sezioni seguenti per eseguire la migrazione del database MySQL esterno a Cloud SQL.

Crea e prepara il file fisico XtraBackup

  1. Sul server esterno, utilizza XtraBackup per eseguire un backup completo del database di origine. Per ulteriori informazioni su come eseguire un backup completo, consulta Creare un backup completo nella documentazione di Percona XtraBackup.

    Altri tipi di backup, come i backup incrementali e parziali, non sono supportati.

    Per migliorare le prestazioni del processo di backup:

    • Copia più file in parallelo durante il passaggio del backup utilizzando --parallel=threads
    • Aumenta l'allocazione della memoria durante il passaggio di preparazione utilizzando --use-memory=size

    Ad esempio:

    sudo xtrabackup --backup \
    --target-dir=XTRABACKUP_PATH \
    --user=USERNAME \
    --password=PASSWORD \
    --parallel=THREADS

    Sostituisci le seguenti variabili:

    • XTRABACKUP_PATH: la posizione del file di backup di output
    • USERNAME: un utente con privilegi BACKUP_ADMIN sul database di origine
    • PASSWORD: la password dell'utente
    • THREADS: il numero di thread da utilizzare quando vengono copiati più file di dati contemporaneamente durante la creazione di un backup
  2. Utilizza l'utilità XtraBackup per preparare il file di backup. Il file deve essere in uno stato coerente. Per ulteriori informazioni sulla preparazione di un backup completo, consulta Preparare un backup completo. Ad esempio:

    sudo xtrabackup --prepare --target-dir=XTRABACKUP_PATH \
        --use-memory=MEMORY

    Sostituisci le seguenti variabili:

    • XTRABACKUP_PATH: la posizione del file di backup di output
    • MEMORY: memoria allocata per la preparazione. Specifica un valore compreso tra 1 GB e 2 GB. Per ulteriori informazioni sull'opzione -use-memory, consulta la documentazione di Percona XtraBackup.

    Il tempo necessario per preparare il file di backup può variare a seconda delle dimensioni del database.

Carica il file fisico XtraBackup su Cloud Storage

Utilizza gcloud CLI per caricare il file di backup in Cloud Storage.

  gcloud storage rsync XTRABACKUP_PATH CLOUD_STORAGE_BUCKET --recursive
  

Sostituisci XTRABACKUP_PATH con la posizione del file di backup di output e CLOUD_STORAGE_BUCKET con il percorso del bucket Cloud Storage.

Non c'è limite alle dimensioni dei file XtraBackup. Tuttavia, esiste un limite di 5 TB per la dimensione ogni singolo file che puoi caricare in un bucket Cloud Storage.

Definisci l'istanza di rappresentazione dell'origine

  1. Crea un file source.json che definisce la rappresentazione di origine per il tuo server esterno. Un'istanza di rappresentazione di origine fornisce per il server esterno in Cloud SQL.

    Nel file source.json, fornisci le seguenti informazioni di base sul tuo server esterno.

    {
    "name": "SOURCE_NAME",
     "region": "REGION",
     "databaseVersion": "DATABASE_VERSION",
     "onPremisesConfiguration": {
        "hostPort": "SOURCE_HOST:3306",
        "username": "REPLICATION_USER_NAME",
        "password": "REPLICATION_USER_PASSWORD",
        "dumpFilePath": "CLOUD_STORAGE_BUCKET"
        "caCertificate": "SOURCE_CERT",
        "clientCertificate": "CLIENT_CERT",
        "clientKey": "CLIENT_KEY"
      }
    }
    Proprietà Descrizione
    SOURCE_NAME Il nome dell'istanza di rappresentazione di origine da creare.
    REGION La regione dove dovrà trovarsi l'istanza di rappresentazione di origine. Specifica la stessa regione in cui creerai l'istanza di replica Cloud SQL di destinazione.
    DATABASE_VERSION La versione del database in esecuzione sul server esterno. Le uniche opzioni supportate sono MYSQL_5_7 o MYSQL_8_0.
    SOURCE_HOST L'indirizzo e la porta IPv4 per il server esterno l'indirizzo DNS del server esterno. Se utilizzi un indirizzo DNS, questo può contenere fino a 60 caratteri.
    USERNAME L'account utente di replica sul server esterno.
    PASSWORD La password per l'account utente di replica.
    CLOUD_STORAGE_BUCKET Il nome del bucket Cloud Storage che contiene File fisico XtraBackup.
    CLIENT_CA_CERT Il certificato CA sul server esterno. Includi solo se SSL/TLS viene utilizzato sul server esterno.
    CLIENT_CERT Il certificato client sul server esterno. Obbligatorio solo per l' autenticazione server-client. Includi solo se SSL/TLS viene utilizzato sul server esterno.
    CLIENT_KEY Il file della chiave privata per il certificato client sul server esterno. Obbligatorio solo per dell'autenticazione server-client. Includi solo se sul server esterno viene utilizzato SSL/TLS.
  2. Crea l'istanza della rappresentazione di origine inviando una richiesta all'API Cloud SQL Admin con il seguente comando curl. Nei dati della richiesta, fornisci il file source.json che hai creato.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
        --header 'Content-Type: application/json' \
        --data @./source.json \
        -X POST \
    https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
    Proprietà Descrizione
    PROJECT_ID L'ID del tuo progetto in Google Cloud.

Identifica un'istanza di replica di destinazione

Crea un file che identifichi la replica di destinazione in Cloud SQL per la migrazione. Puoi eseguire la migrazione dei dati in una nuova istanza creando un oppure puoi utilizzare un'istanza Cloud SQL esistente facendo retrocedere un replica.

Opzione 1: crea un'istanza di replica

  1. Per creare un'istanza di replica, utilizza l'esempio seguente File replica.json:

    {
    "name": "REPLICA_NAME",
    "region": "REGION",
    "databaseVersion": "DB_VERSION",
    "settings": {
       "tier": "INSTANCE_TIER",
       "dataDiskSizeGb": "DISK_SIZE_GB",
       "edition": "EDITION_NAME"
    },
    "masterInstanceName": "SOURCE_NAME"
    }
    Proprietà Descrizione
    REPLICA_NAME Il nome della replica Cloud SQL da creare.
    REGION Specifica la stessa regione che hai assegnato all'origine un'istanza di rappresentazione.
    DATABASE_VERSION La versione del database da utilizzare con la replica Cloud SQL. Le opzioni per questa versione sono MYSQL_5_7 oppure MYSQL_8_0. Questa versione principale del database deve corrispondere al database che hai specificato per il server esterno. Puoi anche specificare una versione secondaria, ma la versione secondaria deve essere o una versione successiva a quella installata sul server esterno. Per un elenco delle stringhe disponibili per MySQL, vedi SqlDatabaseVersion.
    INSTANCE_TIER Il tipo di macchina su cui ospitare l'istanza di replica. Devi specificare che corrisponde all'edizione dell'istanza. Ad esempio, se specifichi ENTERPRISE_PLUS per il campo edition, devi specificare un tipo di macchina ottimizzato per il rendimento del database. Per un elenco dei tipi di macchine supportati, consulta Tipo di macchina.
    DISK_SIZE_GB La dimensione dello spazio di archiviazione della replica Cloud SQL, in GB.
    EDITION_NAME La versione di Cloud SQL da utilizzare per la replica. I valori possibili sono ENTERPRISE_PLUS (solo MySQL 8.0) o ENTERPRISE.
    SOURCE_NAME Il nome assegnato all'istanza di rappresentazione dell'origine.
  2. Crea l'istanza di replica di destinazione effettuando una richiesta alla l'API Cloud SQL Admin con il seguente comando curl. Nei dati relativi alla richiesta, fornisci il file JSON che hai creato.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
        --header 'Content-Type: application/json' \
        --data @./replica.json \
        -X POST \
    https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
    Proprietà Descrizione
    PROJECT_ID L'ID del tuo progetto in Google Cloud.

Opzione 2: utilizza un'istanza di replica esistente

  1. Assicurati che l'istanza di replica esistente abbia almeno lo stesso quantitativo di spazio libero su disco dei file fisici che hai caricato nel bucket Cloud Storage. L'istanza deve disporre di spazio su disco sufficiente per scaricare la stessa quantità di dati da Cloud Storage.

  2. Per utilizzare un'istanza di replica esistente, usa l'esempio seguente File replica.json:

    {
    "demoteContext": {
        "sourceRepresentativeInstanceName": "SOURCE_NAME"
      }
    }
    Proprietà Descrizione
    SOURCE_NAME Il nome assegnato all'istanza di rappresentazione dell'origine.
  3. Retrocedi l'istanza di replica di destinazione esistente inviando una richiesta alla retrocedere l'API Cloud SQL Admin con seguendo il comando curl. Nei dati della richiesta, fornisci il file JSON che hai creato.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
        --header 'Content-Type: application/json' \
        --data @./replica.json \
        -X POST \
    https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/EXISTING_INSTANCE_ID/demote
    Proprietà Descrizione
    PROJECT_ID L'ID del tuo progetto in Google Cloud.
    EXISTING_INSTANCE_ID L'ID dell'istanza di replica esistente che vuoi utilizzare. durante la migrazione.

Verifica le impostazioni di migrazione

Verifica che le istanze siano configurate correttamente per la migrazione eseguendo .

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{
             "syncMode": "SYNC_MODE",
             "skipVerification": false,
             "migrationType": "PHYSICAL"
               }' \
     -X POST \
https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/verifyExternalSyncSettings
Proprietà Descrizione
SYNC_MODE Specifica offline per configurare la migrazione come una tantum e il processo di sviluppo. Per configurare la replica continua dal server esterno, specifica online.
PROJECT_ID L'ID del tuo progetto in Google Cloud.
REPLICA_NAME Il nome assegnato all'istanza di replica di destinazione.

Come risposta iniziale, questo passaggio di verifica restituisce dell'account di servizio. Per continuare con la procedura di migrazione, devi fornire a questo account di servizio le autorizzazioni Cloud Storage. Il messaggio di errore relativo alle autorizzazioni insufficienti è previsto. Di seguito è riportato un esempio di risposta:

{
    "kind": "sql#externalSyncSettingError",
    "type": "INSUFFICIENT_GCS_PERMISSIONS",
    "detail": "Service account
              p703314288590-df3om0@my-project.iam.gserviceaccount.com
              is missing necessary permissions storage.objects.list and
              storage.objects.get to access Google Cloud Storage bucket"
}

Aggiungi le autorizzazioni Cloud Storage all'account di servizio restituito

Per aggiungere le autorizzazioni richieste:

  1. Nella console Google Cloud, vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Fai clic sulla scheda Autorizzazioni.

  3. Fai clic su Concedi l'accesso.

  4. Nel campo Nuove entità, digita il nome dell'account di servizio nella risposta alla verifica. Ad esempio, nell'output di esempio del passaggio precedente, il nome dell'account di servizio restituito è p703314288590-df3om0@my-project.iam.gserviceaccount.com.

  5. Nel menu a discesa Seleziona un ruolo, seleziona il ruolo Storage Object Viewer.

  6. Fai clic su Salva.

Esegui di nuovo la verifica

Dopo aver aggiunto le autorizzazioni richieste all'account di servizio, esegui di nuovo il passaggio di verifica per assicurarti che l'account di servizio abbia accesso al bucket Cloud Storage.

Il passaggio di verifica controlla quanto segue:

  • La connettività tra la replica Cloud SQL e il server esterno è presente, ma solo se la migrazione è continua
  • I privilegi utente di replica sono sufficienti
  • Le versioni sono compatibili
  • La replica Cloud SQL non è già in fase di replica
  • I log bin sono abilitati sul server esterno

Se vengono rilevati problemi, Cloud SQL restituisce un messaggio di errore.

Aggiungi gli utenti alla replica Cloud SQL

Non puoi importare o eseguire la migrazione degli account utente del database dal server esterno. Se devi aggiungere account utente del database alla replica Cloud SQL, aggiungili prima di avviare la replica. Per ulteriori informazioni, vedi Gestisci gli utenti con l'autenticazione integrata.

Avvia la migrazione

Se hai completato la verifica e non vengono restituiti errori, pronti per avviare la migrazione. Per eseguire la migrazione del server esterno, utilizza l'API startExternalSync.

Utilizza questo comando:

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{
               "syncMode": "SYNC_MODE",
               "skipVerification": false,
               "migrationType": "PHYSICAL"
              }' \
     -X POST \
https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/startExternalSync
Proprietà Descrizione
SYNC_MODE Specifica offline per configurare la migrazione come una tantum e il processo di sviluppo. Per configurare la replica continua dal server esterno, specifica online.
PROJECT_ID L'ID del tuo progetto in Google Cloud.
REPLICA_NAME Il nome assegnato all'istanza replica di destinazione.

Monitoraggio della migrazione

Per controllare lo stato della migrazione, puoi:

  1. Recupera l'ID operazione del job di migrazione dalla risposta di l'API startExternalSync. Ad esempio:

    {
    "kind": "sql#operation",
     "targetLink": "https://sqladmin.googleapis.com/v1/projects/my-project/instances/replica-instance",
     "status": "PENDING",
     "user": "user@example.com",
     "insertTime": "******",
     "operationType": "START_EXTERNAL_SYNC",
     "name": "******",
     "targetId": "replica-instance",
     "selfLink": "https://sqladmin.googleapis.com/v1/projects/my-project/operations/OPERATION_ID",
     "targetProject": "my-project"
    }
    
  2. Utilizza l'ID operazione nel comando seguente.

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
        --header 'Content-Type: application/json' \
        -X GET \
    https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/START_EXTERNAL_SYNC_OPERATION_ID
    Proprietà Descrizione
    PROJECT_ID L'ID del tuo progetto in Google Cloud.
    START_EXTERNAL_SYNC_OPERATION_ID L'ID operazione del job di migrazione.

Monitora replica

Quando l'istanza di replica di destinazione in Cloud SQL completa il caricamento iniziale dei dati, si connette al server esterno e applica tutti gli aggiornamenti apportati dopo l'operazione di esportazione.

Per monitorare lo stato della replica, consulta Verificare lo stato della replica.

Una volta che la replica Cloud SQL ha ricevuto tutte le modifiche dal server esterno e non ci sono ritardi di replica sulla replica Cloud SQL, connettersi al tuo database. Esegui i comandi appropriati del database per assicurarti che i contenuti siano quelli previsti rispetto al server esterno.

Dopo aver promosso la replica di destinazione a istanza autonoma, puoi i file fisici XtraBackup nel bucket Cloud Storage. Mantieni il server esterno fino al completamento delle convalide necessarie.

Limitazioni

Questa sezione elenca le limitazioni del processo di migrazione di XtraBackup:

  • Devi utilizzare Percona XtraBackup per eseguire il backup dei dati nel bucket Cloud Storage. Altre utilità di backup non sono supportate.
  • La migrazione non è supportata a versioni principali o secondarie precedenti del database. Ad esempio, non puoi eseguire la migrazione da MySQL 8.0 a 5.7 o da MySQL 8.0.36 a 8.0.16.
  • La migrazione del database da un file fisico XtraBackup è supportata solo per database MySQL on-premise o database MySQL autogestiti in esecuzione su una VM di Compute Engine. Migrazione da Amazon Aurora o MySQL su Amazon I database RDS non sono supportati.
  • Puoi eseguire la migrazione solo da un backup completo. Altri tipi di backup, come i backup incrementali o parziali, non sono supportati.
  • La migrazione dei database non include privilegi o utenti del database.
  • Devi impostare il formato del log binario su ROW. Se configuri il log binario in un altro formato, ad esempio STATEMENT o MIXED, la replica potrebbe non riuscire.
  • Cloud Storage limita a 5 TB le dimensioni di un file che puoi caricare in un bucket.
  • Non puoi eseguire la migrazione di plug-in dal tuo database esterno.
  • Se hai configurato l'alta disponibilità per la tua istanza, lo SLA non verrà applicato fino al completamento della fase iniziale della migrazione. Questa fase viene considerata completata quando tutti i dati di XtraBackup i file fisici sono stati importati nell'istanza Cloud SQL.
  • Non puoi eseguire la migrazione a o da un database MySQL 8.4.

Risoluzione dei problemi

Questa sezione elenca gli scenari di risoluzione dei problemi più comuni.

Importazione non riuscita

Se durante la migrazione ricevi un messaggio di errore simile a Attempt 1/2: import failed, devi specificare PHYSICAL per migrationType quando avvii la migrazione.

Se non specifichi un valore migrationType, il tipo viene utilizzato per impostazione predefinita LOGICAL.

Annullare o interrompere una migrazione

Se devi annullare o interrompere una migrazione, puoi eseguire questo comando:

gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
    -X POST \
https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/REPLICA_NAME/restart
Proprietà Descrizione
PROJECT_ID L'ID del tuo progetto in Google Cloud.
REPLICA_NAME Il nome assegnato all'istanza replica di destinazione.

Passaggi successivi