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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Assicurati di disporre dei ruoli Amministratore Cloud SQL, Amministratore di archiviazione e visualizzatore di Compute nel tuo account utente.
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
Installa una delle seguenti versioni dell'utilità XtraBackup sul server esterno.
- Per MySQL 5.7, installa Percona XtraBackup 2.4.
- Per MySQL 8.0, installa Percona XtraBackup 8.0.x.
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.
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 predefinitoibdata1
. 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 coninnodb_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 predefinito16384
.
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
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
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
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
oMYSQL_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. 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 filesource.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
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
oppureMYSQL_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 campoedition
, 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) oENTERPRISE
.SOURCE_NAME Il nome assegnato all'istanza di rappresentazione dell'origine. 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
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.
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. 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:
Nella console Google Cloud, vai alla pagina Bucket in Cloud Storage.
Fai clic sulla scheda Autorizzazioni.
Fai clic su Concedi l'accesso.
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
.Nel menu a discesa Seleziona un ruolo, seleziona il ruolo
Storage Object Viewer
.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:
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" }
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 esempioSTATEMENT
oMIXED
, 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
- Promuovi la replica a istanza principale
- Aggiungere repliche di lettura all'istanza
- Configura la tua istanza per l'alta disponibilità