Questa pagina offre una panoramica su come eseguire la migrazione del tuo database Online Transactional Processing (OLTP) da MySQL a Spanner. Il processo di migrazione a Spanner può variare a seconda di fattori come le dimensioni dei dati, i requisiti di tempo di inattività, la complessità del codice dell'applicazione, lo schema di sharding, le funzioni personalizzate e le strategie di failover e replica.
La migrazione di Spanner è suddivisa nei seguenti passaggi:
- Valuta la migrazione.
- Esegui la migrazione dello schema e traduci le query SQL.
- Esegui la migrazione dell'applicazione per utilizzare Spanner oltre a MySQL.
- Carica dati di esempio e ottimizza il rendimento.
- Eseguire la migrazione dei dati.
- Convalida la migrazione.
- Configura i meccanismi di cutover e di fallback.
Valuta la migrazione
La valutazione di una migrazione dal database MySQL di origine a Spanner richiede la valutazione delle tue esigenze aziendali, tecniche, operative e finanziarie. Per ulteriori informazioni, vedi Valutare la migrazione.
Eseguire la migrazione dello schema
Converti lo schema esistente in uno schema Spanner utilizzando lo strumento di migrazione di Spanner.
Per maggiori informazioni, consulta la pagina Panoramica della migrazione dello schema da MySQL.
Esegui la migrazione dell'applicazione per utilizzare Spanner
Spanner fornisce un insieme di librerie client per vari linguaggi e la possibilità di leggere e scrivere dati utilizzando chiamate API specifiche di Spanner, nonché utilizzando query SQL e istruzioni Data Modification Language (DML). L'utilizzo di chiamate API potrebbe essere più veloce per alcune query, ad esempio le letture dirette delle righe per chiave, perché l'istruzione SQL non deve essere tradotta.
Spanner fornisce un driver JDBC per le applicazioni Java.
Nell'ambito del processo di migrazione, le funzionalità non disponibili in Spanner, come indicato in precedenza, devono essere implementate nell'applicazione. Ad esempio, un trigger per verificare i valori dei dati e aggiornare una tabella correlata dovrebbe essere implementato nell'applicazione utilizzando una transazione di lettura o scrittura per leggere la riga esistente, verificare il vincolo, quindi scrivere le righe aggiornate in entrambe le tabelle.
Spanner offre transazioni di lettura/scrittura e di sola lettura che garantiscono la coerenza esterna dei dati. Inoltre, alle transazioni di lettura possono essere applicati limiti temporali, in cui viene letta una versione coerente dei dati:
- a un'ora esatta nel passato (fino a un'ora fa).
- in futuro (la lettura verrà bloccata fino a quel momento).
- con una quantità accettabile di obsolescenza vincolata, che restituirà una visualizzazione coerente fino a un certo momento nel passato senza dover verificare che i dati successivi siano disponibili su un'altra replica. Ciò può offrire vantaggi in termini di prestazioni a discapito di dati potenzialmente obsoleti.
Caricare dati di esempio in Spanner
Puoi caricare dati di esempio in Spanner prima di eseguire una migrazione completa dei dati per testare schemi, query e la tua applicazione.
Puoi utilizzare il flusso di lavoro BigQuery Reverse ETL e la Google Cloud CLI per caricare una piccola quantità di dati nel formato di file CSV in Spanner.
Per saperne di più, consulta Caricare dati di esempio.
Per trasferire i dati da MySQL a Spanner, puoi anche esportare il database MySQL in un formato di file portatile, ad esempio XML, e poi importare i dati in Spanner utilizzando Dataflow.
Eseguire la migrazione dei dati a Spanner
Dopo aver ottimizzato lo schema Spanner e caricato i dati di esempio, puoi spostare i dati in un database Spanner vuoto di dimensioni di produzione.
Per saperne di più, consulta la sezione Migrazione dei dati live da MySQL.
Convalidare la migrazione dei dati
Man mano che i dati vengono trasmessi in streaming nel database Spanner, puoi eseguire periodicamente un confronto tra i dati di Spanner e quelli di MySQL per assicurarti che siano coerenti. Puoi convalidare la coerenza eseguendo query su entrambe le origini dati e confrontando i risultati.
Puoi utilizzare Dataflow per eseguire un confronto dettagliato su set di dati di grandi dimensioni utilizzando la trasformazione di unione. Questa trasformazione accetta due set di dati con chiavi e associa i valori in base alla chiave. I valori corrispondenti possono quindi essere confrontati per verificare l'uguaglianza. Puoi eseguire regolarmente questa verifica finché il livello di coerenza non corrisponde ai requisiti della tua attività.
Per ulteriori informazioni, vedi Convalidare la migrazione dei dati.
Configura i meccanismi di cutover e di fallback
Puoi configurare il cutover e il fallback per MySQL utilizzando la replica inversa. Il cutover e il fallback significano che hai un piano di emergenza per ripristinare il database MySQL di origine se riscontri problemi con Spanner.
La replica inversa è utile quando si verificano problemi imprevisti con Spanner e devi eseguire il failback al database MySQL originale con interruzione minima del servizio. La replica inversa consente il failback replicando i dati scritti su Spanner nel database MySQL di origine.
Il flusso di replica inversa prevede i seguenti passaggi, eseguiti dal
modello Dataflow:Spanner to SourceDB
Leggi le modifiche da Spanner utilizzando i flussi di modifiche di Spanner.
Filtra le modifiche di migrazione in avanti.
Trasforma i dati Spanner in modo che siano compatibili con lo schema del database di origine.
Verifica se il database di origine contiene già dati più recenti per la chiave primaria specificata.
Scrivi i dati nel database di origine.
Passaggi successivi
- Best practice per la progettazione dello schema.
- Ottimizza lo schema Spanner.
- Scopri come utilizzare Dataflow per situazioni più complesse.