Esegui la migrazione da MySQL a Spanner

Questa pagina offre una panoramica su come eseguire la migrazione del 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.
  7. Configura i meccanismi di cutover e fallback.

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 ulteriori informazioni, vedi 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 ulteriori informazioni, vedi 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 del linguaggio di modifica dei dati (DML). 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 quindi 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, vedi Utilizzare il livello di isolamento di lettura ripetibile e Configurare il controllo della concorrenza.

Spanner offre transazioni di lettura o 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 i dati di esempio in Spanner prima di eseguire una migrazione completa dei dati per testare schemi, query e applicazioni.

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

Per ulteriori informazioni, vedi Caricare i 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.

Esegui 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 ulteriori informazioni, vedi Migrazione live dei dati da 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 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 ulteriori informazioni, vedi Convalidare la migrazione dei dati.

Configura i meccanismi di cutover e fallback

Puoi configurare il cutover e il fallback per MySQL utilizzando la replica inversa. Cutover e fallback significa 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 fallback al database MySQL originale con un'interruzione minima del servizio. La replica inversa consente il fallback replicando i dati scritti su 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