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 file fisici, puoi migliorare la velocità complessiva del tuo fino a 10 volte tramite una normale migrazione basata su file di dump logico.

Cloud SQL supporta la migrazione basata su file fisici per MySQL 5.7 e 8.0. MySQL 5.6 non è supportato. 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 installato con la stessa versione principale di MySQL del tuo a un server esterno. Tuttavia, la replica di destinazione può utilizzare una versione secondaria successiva. Ad esempio, se il 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 fornisce i passaggi da seguire prima di eseguire la migrazione di MySQL in Google Cloud.

Configura un progetto Google Cloud

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Cloud SQL Admin.

    Abilita l'API

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

    Go to project selector

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Cloud SQL Admin.

    Abilita l'API

  8. Assicurati di avere i ruoli Amministratore Cloud SQL, Amministratore Storage e con i ruoli di Visualizzatore Compute per il 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 tuo a un 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 la sezione Confronto tra versioni del server e versioni di backup nella documentazione di Percona XtraBackup.

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

    Oltre ai requisiti del server esterno per la replica, migrazione da un file fisico XtraBackup prevede 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.
    • Parametro innodb_page_size nell'origine esterna il database 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.

Eseguire la migrazione

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

Crea e prepara il file fisico XtraBackup

  1. Sul server esterno, utilizza XtraBackup per eseguire un backup completo del 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 quelli incrementali e parziali, non sono supportati.

    Per migliorare le prestazioni del processo di backup, segui questi passaggi:

    • 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 in base alle 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, 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 client-server. 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 l'autenticazione client-server. Includi solo se viene utilizzato SSL/TLS nella a un server esterno.
  2. Crea l'istanza di rappresentazione dell'origine effettuando una richiesta alla l'API Cloud SQL Admin con il seguente comando curl. Nei dati relativi alla richiesta, fornisci source.json file creato da te.

    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 durante 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 di 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 edition, devi specificare un valore db-perf-optimized tipo di macchina. Per un elenco dei tipi di macchina supportati, vedi 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 la quantità dell'istanza di replica esistente sia almeno uguale di spazio libero su disco in quanto i file fisici che hai caricato nel bucket Cloud Storage. L'istanza deve avere un disco sufficiente 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 relativi a 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. Devi fornire questo account di servizio con le autorizzazioni di Cloud Storage per continuare il processo di migrazione. Previsto un messaggio di errore relativo ad autorizzazioni insufficienti. 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 di 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 nel 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 nel bucket Cloud Storage.

Il passaggio di verifica controlla quanto segue:

  • La connettività tra la replica Cloud SQL e il server esterno è 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 binlog sono abilitati sul server esterno

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

Aggiungi utenti alla replica Cloud SQL

Non puoi importare o migrare gli account utente del database dal server esterno. Se devi aggiungere account utente del database a Cloud SQL quindi aggiungi gli account 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 di 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 ID operazione del job di migrazione.

Monitora replica

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

Per monitorare lo stato della replica, consulta Verifica 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. Conserva il server esterno fino al completamento delle convalide necessarie.

Limitazioni

Questa sezione elenca le limitazioni previste per il processo di migrazione XtraBackup:

  • Devi utilizzare Percona XtraBackup per eseguire il backup dei dati nel Cloud Storage di sincronizzare la directory di una VM con un bucket. 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, ad esempio quelli incrementali o backup 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 log binario in qualsiasi 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 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.

Risoluzione dei problemi

Questa sezione elenca gli scenari comuni di risoluzione dei problemi.

Importazione non riuscita

Se viene visualizzato un messaggio di errore simile a Attempt 1/2: import failed Quando esegui la migrazione, 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 di replica di destinazione.

Passaggi successivi