Introduzione ai trasferimenti di dati MySQL

Puoi caricare i dati da MySQL a BigQuery utilizzando il BigQuery Data Transfer Service per MySQL. Il connettore supporta le istanze MySQL ospitate nel tuo ambiente on-premise, Cloud SQL e altri provider di cloud pubblico come Amazon Web Services (AWS) e Microsoft Azure. Questo documento fornisce una panoramica delle opzioni di importazione dati per il trasferimento MySQL e informazioni sulla mappatura dei tipi di dati e sui prezzi.

Per scoprire come pianificare un trasferimento MySQL, consulta Caricare i dati MySQL in BigQuery.

Opzioni di acquisizione dei dati

Le sezioni seguenti forniscono informazioni sulle opzioni di importazione dati quando configuri un trasferimento di dati MySQL.

Configurazione TLS

Il connettore MySQL supporta la configurazione per la sicurezza a livello di trasporto (TLS) per crittografare i trasferimenti di dati in BigQuery. Il connettore MySQL supporta le seguenti configurazioni TLS:

  • La modalità Crittografa i dati e verifica la CA e il nome host. Questa modalità esegue una convalida completa del server utilizzando TLS sul protocollo TCPS. Crittografa tutti i dati in transito e verifica che il certificato del server di database sia firmato da un'autorità di certificazione (CA) attendibile. Questa modalità verifica anche che il nome host a cui ti stai connettendo corrisponda esattamente al nome comune (CN) o a un nome alternativo del soggetto (SAN) nel certificato del server. Questa modalità impedisce agli autori di attacchi di utilizzare un certificato valido per un dominio diverso per impersonare il server di database.

    Se il nome host non corrisponde al CN o al SAN del certificato, la connessione non riesce. Devi configurare una risoluzione DNS in modo che corrisponda al certificato o utilizzare una modalità di sicurezza diversa. Utilizza questa modalità per l'opzione più sicura per impedire attacchi man-in-the-middle (MITM).

  • La modalità Crittografa i dati e verifica solo la CA. Questa modalità crittografa tutti i dati utilizzando TLS sul protocollo TCPS e verifica che il certificato del server sia firmato da una CA di cui il client si fida. Tuttavia, questa modalità non verifica il nome host del server. Questa modalità si connette correttamente a condizione che il certificato sia valido ed emesso da una CA attendibile, indipendentemente dal fatto che il nome host nel certificato corrisponda al nome host a cui ti stai connettendo.

    Utilizza questa modalità se vuoi assicurarti di connetterti a un server il cui certificato è firmato da una CA attendibile, ma il nome host non è verificabile o non hai il controllo sulla configurazione del nome host.

  • La modalità Solo crittografia. Questa modalità crittografa tutti i dati trasferiti tra il client e il server. Non esegue alcuna convalida del certificato o del nome host.

    Questa modalità fornisce un certo livello di sicurezza proteggendo i dati in transito, ma può essere vulnerabile agli attacchi MITM.

    Utilizza questa modalità se devi assicurarti che tutti i dati siano crittografati, ma non puoi o non vuoi verificare l'identità del server. Ti consigliamo di utilizzare questa modalità quando lavori con VPC privati.

  • La modalità Nessuna crittografia o verifica. Questa modalità non crittografa i dati e non esegue alcuna verifica del certificato o del nome host. Tutti i dati vengono inviati come testo normale.

    Non consigliamo di utilizzare questa modalità in un ambiente in cui vengono gestiti dati sensibili. Consigliamo di utilizzare questa modalità solo per scopi di test su una rete isolata in cui la sicurezza non è un problema.

Certificato server attendibile (PEM)

Se utilizzi la modalità Crittografa i dati e verifica la CA e il nome host o la modalità Crittografa i dati e verifica la CA, puoi anche fornire uno o più certificati con codifica PEM. Questi certificati sono necessari in alcuni scenari in cui BigQuery Data Transfer Service deve verificare l'identità del server di database durante la connessione TLS:

  • Se utilizzi un certificato firmato da una CA privata all'interno della tua organizzazione o un certificato autofirmato, devi fornire la catena di certificati completa o il singolo certificato autofirmato. Questo è obbligatorio per i certificati emessi dalle CA interne dei servizi di provider cloud gestiti, come Amazon Database Relazionale Service (RDS).
  • Se il certificato del server di database è firmato da una CA pubblica (ad esempio Let's Encrypt, DigiCert o GlobalSign), non devi fornire un certificato. I certificati radice per queste CA pubbliche sono preinstallati e attendibili da BigQuery Data Transfer Service.

Puoi specificare i certificati con codifica PEM nel campo Certificato PEM attendibile nella configurazione del trasferimento, con i seguenti requisiti:

  • Il certificato deve essere una catena di certificati valida con codifica PEM.
  • Il certificato deve essere completamente corretto. Eventuali certificati mancanti nella catena o contenuti errati causano il fallimento della connessione TLS.
  • Per un singolo certificato, puoi fornire un singolo certificato autofirmato dal server di database.
  • Per una catena di certificati completa emessa da una CA privata, devi fornire la catena di attendibilità completa. Sono inclusi il certificato del server di database e tutti i certificati CA intermedi e radice.

Trasferimenti completi o incrementali

Puoi specificare come caricare i dati in BigQuery selezionando la preferenza di scrittura Completa o Incrementale nella configurazione del trasferimento quando configuri un trasferimento MySQL. I trasferimenti incrementali sono supportati in anteprima.

Puoi configurare un trasferimento di dati completo per trasferire tutti i dati dai set di dati MySQL a ogni trasferimento di dati.

In alternativa, puoi configurare un trasferimento di dati incrementale (anteprima) per trasferire solo i dati modificati dall'ultimo trasferimento di dati, anziché caricare l'intero set di dati a ogni trasferimento di dati. Se selezioni Incrementale per il trasferimento di dati, devi specificare le modalità di scrittura Aggiungi o Esegui upsert per definire come vengono scritti i dati in BigQuery durante un trasferimento di dati incrementale. Le sezioni seguenti descrivono le modalità di scrittura disponibili.

Modalità di scrittura Aggiungi

La modalità di scrittura Aggiungi inserisce solo nuove righe nella tabella di destinazione. Questa opzione aggiunge rigorosamente i dati trasferiti senza verificare la presenza di record esistenti, pertanto questa modalità può potenzialmente causare la duplicazione dei dati nella tabella di destinazione.

Quando selezioni la modalità di aggiunta, devi selezionare una colonna watermark. È necessaria una colonna watermark per consentire al connettore MySQL di monitorare le modifiche nella tabella di origine.

Per i trasferimenti MySQL, ti consigliamo di selezionare una colonna che viene aggiornata solo quando è stato creato il record e non cambia con gli aggiornamenti successivi, ad esempio la colonna CREATED_AT.

Modalità di scrittura Esegui upsert

La modalità di scrittura Esegui upsert aggiorna una riga o inserisce una nuova riga nella tabella di destinazione verificando la presenza di una chiave primaria. Puoi specificare una chiave primaria per consentire al connettore MySQL di determinare le modifiche necessarie per mantenere aggiornata la tabella di destinazione con la tabella di origine. Se la chiave primaria specificata è presente nella tabella BigQuery di destinazione durante un trasferimento di dati, il connettore MySQL aggiorna la riga con i nuovi dati della tabella di origine. Se una chiave primaria non è presente durante un trasferimento di dati, il connettore MySQL inserisce una nuova riga.

Quando selezioni la modalità Esegui upsert, devi selezionare una colonna watermark e una chiave primaria:

  • È necessaria una colonna watermark per consentire al connettore MySQL di monitorare le modifiche nella tabella di origine.
    • Seleziona una colonna watermark che si aggiorna ogni volta che una riga viene modificata. Ti consigliamo di utilizzare colonne simili alla colonna UPDATED_AT o LAST_MODIFIED.
  • La chiave primaria può essere una o più colonne della tabella necessarie per consentire al connettore MySQL di determinare se deve inserire o aggiornare una riga.

    Seleziona le colonne che contengono valori non nulli univoci in tutte le righe della tabella. Ti consigliamo di utilizzare colonne che includono identificatori generati dal sistema, codici di riferimento univoci (ad esempio, ID a incremento automatico) o ID di sequenza basati sul tempo immutabili.

    Per evitare potenziali perdite o danneggiamenti dei dati, le colonne della chiave primaria selezionate devono avere valori univoci. Se hai dubbi sull'unicità della colonna della chiave primaria scelta, ti consigliamo di utilizzare la modalità di scrittura Aggiungi.

Comportamento di importazione incrementale

Quando apporti modifiche allo schema della tabella nell'origine dati, i trasferimenti di dati incrementali da queste tabelle vengono riportati in BigQuery nei seguenti modi:

Modifiche all'origine dati Comportamento di importazione incrementale
Aggiungere una nuova colonna Una nuova colonna viene aggiunta alla tabella BigQuery di destinazione. Tutti i record precedenti per questa colonna avranno valori null.
Eliminare una colonna La colonna eliminata rimane nella tabella BigQuery di destinazione. Le nuove voci in questa colonna eliminata vengono compilate con valori null.
Modificare il tipo di dati in una colonna Il connettore supporta solo le conversioni dei tipi di dati supportate dall'istruzione DDL ALTER COLUMN. Qualsiasi altra conversione del tipo di dati causa il fallimento del trasferimento di dati.

Se riscontri problemi, ti consigliamo di creare una nuova configurazione di trasferimento.

Rinominare una colonna La colonna originale rimane nella tabella BigQuery di destinazione così com'è, mentre una nuova colonna viene aggiunta alla tabella di destinazione con il nome aggiornato.

Mappatura dei tipi di dati

La tabella seguente mappa i tipi di dati MySQL ai tipi di dati BigQuery corrispondenti:

Tipo di dati MySQL Tipo di dati BigQuery Tipo di dati BigQuery aggiornato
BIT BOOLEAN
TINYINT INTEGER
BOOL, BOOLEAN INTEGER

In un database MySQL, i tipi di dati BOOL e BOOLEAN vengono archiviati internamente come TINYINT(1), che supporta valori nell'intervallo -128 a 127. Per questo motivo, i tipi di dati BOOL e BOOLEAN vengono mappati a INTEGER quando vengono trasferiti a BigQuery. Per saperne di più, vedi Sintassi dei tipi di dati numerici.

SMALLINT INTEGER
MEDIUMINT INTEGER
INT, INTEGER INTEGER
BIGINT BIGNUMERIC
FLOAT FLOAT
DOUBLE FLOAT
DECIMAL BIGNUMERIC
DATE DATE
DATETIME TIMESTAMP DATETIME
TIMESTAMP TIMESTAMP
TIME TIME
YEAR DATE
CHAR STRING
VARCHAR STRING
BINARY BYTES
VARBINARY BYTES
TINYBLOB BYTES
TINYTEXT STRING
BLOB BYTES
TEXT STRING
MEDIUMBLOB BYTES
MEDIUMTEXT STRING
LONGBLOB BYTES
LONGTEXT STRING
ENUM STRING
SET STRING
JSON STRING JSON
GEOMETRY BYTES GEOGRAPHY

Prezzi

Per informazioni sui prezzi dei trasferimenti MySQL, consulta Prezzi di Data Transfer Service.

Passaggi successivi