Esegui la migrazione da MySQL a Spanner

Questa pagina offre una panoramica su come eseguire la migrazione del tuo database Online Transactional Processing (OLTP) da MySQL a Spanner. La procedura 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:

  1. Valuta la migrazione.
  2. Esegui la migrazione dello schema e traduci le query SQL.
  3. Esegui la migrazione dell'applicazione per utilizzare Spanner oltre a MySQL.
  4. Carica i dati di esempio e ottimizza il rendimento.
  5. Esegui la migrazione dei dati.
  6. Convalida la migrazione.

Valuta la migrazione

La valutazione di una migrazione dal database MySQL di origine a Spanner richiede la valutazione delle esigenze aziendali, tecniche, operative e finanziarie. Per saperne di più, consulta Valuta la migrazione.

Esegui la migrazione dello schema

Converti lo schema esistente in uno schema Spanner schema utilizzando lo strumento di migrazione di Spanner.

Per saperne di più, consulta Esegui la migrazione di uno 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 DML (Data Modification Language). L'utilizzo delle 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 della procedura 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 e poi scrivere le righe aggiornate in entrambe le tabelle.

Il livello di isolamento predefinito delle transazioni in Spanner è l'isolamento serializzabile, che garantisce la coerenza esterna dei dati. Spanner offre anche l'isolamento di lettura ripetibile. Ti consigliamo di impostare il livello di isolamento su lettura ripetibile e il controllo della contemporaneità su concorrenza pessimistica nell'ambito della procedura di migrazione dell'applicazione, in modo che la semantica delle transazioni di Spanner corrisponda strettamente alla semantica delle transazioni predefinita di MySQL. Per istruzioni su come impostare il livello di isolamento e il controllo della concorrenza nell'applicazione, consulta Utilizza il livello di isolamento di lettura ripetibile e Configura il controllo della concorrenza.

Spanner offre transazioni di lettura/scrittura e di sola lettura. Inoltre, alle transazioni di lettura possono essere applicati limiti di timestamp, in cui si legge una versione coerente dei dati:

  • A un'ora esatta nel passato (fino a 1 ora fa).
  • In futuro (dove la lettura verrà bloccata fino a quel momento).
  • Con una quantità accettabile di dati obsoleti limitati, 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. Questo può comportare vantaggi in termini di prestazioni a scapito di dati potenzialmente obsoleti.

Carica i dati di esempio in Spanner

Puoi caricare dati campionati in Spanner prima di eseguire una migrazione completa dei dati per testare schemi, query e la tua applicazione.

Puoi utilizzare il flusso di lavoro ETL inverso di BigQuery e Google Cloud CLI per caricare una piccola quantità di dati nel formato file CSV in Spanner.

Per saperne di più, consulta Carica i dati di esempio.

Per trasferire i dati da MySQL a Spanner, puoi anche esportare il database MySQL in un formato file portatile, ad esempio XML, e poi importare i dati in Spanner utilizzando Dataflow.

Esegui la migrazione dei dati a Spanner

Dopo aver ottimizzato lo schema Spanner e caricato i dati campionati, puoi spostare i dati in un database Spanner vuoto di dimensioni di produzione.

Per saperne di più, consulta Esegui la migrazione dei dati MySQL.

Convalida 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 join. Questa trasformazione accetta due set di dati con chiave e associa i valori per chiave. I valori corrispondenti possono quindi essere confrontati per verificare l'uguaglianza. Puoi eseguire regolarmente questa verifica finché il livello di coerenza non soddisfa i requisiti aziendali.

Per saperne di più, consulta Convalida la migrazione dei dati.

Configura il fallback e il cutover

Puoi configurare il fallback e il cutover per MySQL utilizzando la replica inversa. La configurazione del fallback ti aiuta a garantire di avere un piano di emergenza per ripristinare il database MySQL di origine in caso di problemi dopo il cutover a Spanner.

La replica inversa è utile quando si verificano problemi imprevisti con Spanner e devi eseguire il fallback al database MySQL originale con un'interruzione minima del servizio. La replica inversa consente il fallback replicando i dati scritti in Spanner nel database MySQL di origine.

Il flusso di replica inversa prevede i seguenti passaggi, eseguiti dal spanner-to-sourcedb modello Dataflow:

  1. Leggi le modifiche da Spanner utilizzando le modifiche in tempo reale di Spanner.

  2. Filtra le modifiche migrate in avanti.

  3. Trasforma i dati di Spanner in modo che siano compatibili con lo schema del database di origine.

  4. Verifica se il database di origine contiene già dati più recenti per la chiave primaria specificata.

  5. Scrivi i dati nel database di origine.

Passaggi successivi