Carica i dati MySQL in BigQuery
Per pianificare trasferimenti di dati ricorrenti da MySQL a BigQuery, puoi creare una configurazione del trasferimento per specificare quali oggetti dati trasferire e con quale frequenza pianificare il trasferimento di dati. Dopo aver configurato la configurazione del trasferimento, BigQuery Data Transfer Service trasferisce i dati più recenti in una tabella BigQuery in base alla pianificazione specificata.
Per scoprire come funziona un trasferimento di dati MySQL, consulta Introduzione ai trasferimenti di dati MySQL.
Limitazioni
I trasferimenti di dati MySQL sono soggetti alle seguenti limitazioni:
- Il numero massimo di connessioni simultanee a un database MySQL è determinato dal parametro di configurazione MySQL
max_connections. Per impostazione predefinita, questo valore è impostato su 151 connessioni, ma può essere configurato su un limite più alto, se necessario. Di conseguenza, il numero di esecuzioni di trasferimento simultanee a un singolo database MySQL è limitato a questo importo massimo. Questa limitazione significa anche che il numero di job di trasferimento simultanei deve essere limitato a un valore inferiore al numero massimo di connessioni simultanee supportate dal database MySQL. - Una singola configurazione di trasferimento può supportare una sola esecuzione del trasferimento di dati alla volta. Nel caso in cui sia pianificata l'esecuzione di un secondo trasferimento di dati prima del completamento del primo, viene completato solo il primo trasferimento di dati, mentre gli altri trasferimenti di dati che si sovrappongono al primo vengono ignorati.
- Per evitare trasferimenti saltati all'interno di una singola configurazione del trasferimento, ti consigliamo di aumentare l'intervallo di tempo tra i trasferimenti di dati di grandi dimensioni configurando l'opzione Frequenza di ripetizione.
- Durante un trasferimento di dati, il connettore MySQL identifica le colonne chiave indicizzate e partizionate per trasferire i dati in batch paralleli. Per questo motivo, ti consigliamo di specificare le colonne della chiave primaria o di utilizzare colonne indicizzate nella tabella per migliorare le prestazioni e ridurre il tasso di errore nei trasferimenti di dati.
- Se hai vincoli di chiave primaria o indicizzati, sono supportati solo i seguenti tipi di colonne per la creazione di batch paralleli:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- I trasferimenti di dati MySQL che non utilizzano colonne con chiave primaria o indicizzate non possono supportare più di 2.000.000 di record per tabella.
- Se hai vincoli di chiave primaria o indicizzati, sono supportati solo i seguenti tipi di colonne per la creazione di batch paralleli:
Limitazioni del trasferimento incrementale
I trasferimenti MySQL incrementali sono soggetti alle seguenti limitazioni:- Puoi scegliere solo
TIMESTAMPcolonne come colonne di watermark. - L'importazione incrementale è supportata solo per gli asset con colonne di watermark valide.
- I valori in una colonna di watermark devono essere in ordine crescente.
- I trasferimenti incrementali non possono sincronizzare le operazioni di eliminazione nella tabella di origine.
- Una singola configurazione del trasferimento può supportare solo l'acquisizione incrementale o completa.
- Non puoi aggiornare gli oggetti nell'elenco
assetdopo la prima esecuzione dell'importazione incrementale. - Non puoi modificare la modalità di scrittura in una configurazione di trasferimento dopo la prima esecuzione dell'importazione incrementale.
- Non puoi modificare la colonna del watermark o la chiave primaria dopo la prima esecuzione dell'importazione incrementale.
- La tabella BigQuery di destinazione è raggruppata in cluster utilizzando la chiave primaria fornita ed è soggetta alle limitazioni delle tabelle in cluster.
Quando aggiorni una configurazione del trasferimento esistente alla modalità di importazione incrementale per la prima volta, il primo trasferimento di dati dopo l'aggiornamento trasferisce tutti i dati disponibili dall'origine dati. Tutti i trasferimenti di dati incrementali successivi trasferiranno solo le righe nuove e aggiornate dall'origine dati.
Ti consigliamo di creare indici nella colonna del watermark. Questo connettore utilizza colonne di watermark per i filtri nei trasferimenti incrementali, pertanto l'indicizzazione di queste colonne può migliorare le prestazioni.
Quando esegui un trasferimento incrementale, devi utilizzare la mappatura aggiornata dei tipi di dati.
Prima di iniziare
- Crea un utente nel database MySQL.
- Verifica di aver completato tutte le azioni necessarie per abilitare BigQuery Data Transfer Service.
- Crea un set di dati BigQuery per archiviare i dati.
- Verifica di disporre dei ruoli richiesti per completare le attività descritte in questo documento.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati BigQuery Data Transfer Service, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) nel progetto.
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati di BigQuery Data Transfer Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:
Autorizzazioni obbligatorie
Per creare un trasferimento di dati di BigQuery Data Transfer Service sono necessarie le seguenti autorizzazioni:
-
Autorizzazioni di BigQuery Data Transfer Service:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Autorizzazioni BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Per saperne di più, consulta Concedi l'accesso a bigquery.admin.
Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub, assicurati di disporre dell'autorizzazione Identity and Access Management (IAM) pubsub.topics.setIamPolicy. Le autorizzazioni Pub/Sub non sono necessarie se configuri solo le notifiche via email. Per saperne di più, consulta Notifiche di esecuzione di BigQuery Data Transfer Service.
Connessioni di rete
Se non è disponibile un indirizzo IP pubblico per la connessione al database MySQL, devi configurare un collegamento di rete.
Per istruzioni dettagliate sulla configurazione di rete richiesta, consulta i seguenti documenti:
- Se esegui il trasferimento da Cloud SQL, consulta Configura l'accesso alle istanze Cloud SQL.
- Se stai eseguendo il trasferimento da AWS, consulta Configura la VPN AWS-Google Cloud e il collegamento di rete.
- Se esegui il trasferimento da Azure, consulta Configura la VPN di Azure-Google Cloud e il collegamento di rete.
Carica i dati MySQL in BigQuery
Aggiungi i dati MySQL a BigQuery configurando una configurazione del trasferimento utilizzando una delle seguenti opzioni:
Console
Vai alla pagina Trasferimenti di dati.
Fai clic su Crea trasferimento.
Nella sezione Tipo di origine, per Origine, seleziona MySQL.
Nella sezione Dettagli origine dati, segui questi passaggi:
- Per Collegamento di rete, seleziona un collegamento di rete esistente o fai clic su Crea collegamento di rete. Per saperne di più, consulta la sezione Connessioni di rete di questo documento.
- In Host, inserisci il nome host o l'indirizzo IP del server del database MySQL.
- In Numero porta, inserisci il numero di porta del server di database MySQL.
- In Nome database, inserisci il nome del database MySQL.
- In Nome utente, inserisci il nome dell'utente MySQL che avvia la connessione al database MySQL.
- In Password, inserisci la password dell'utente MySQL che avvia la connessione al database MySQL.
- Per Modalità TLS, seleziona un'opzione dal menu. Per scoprire di più sulle modalità TLS, consulta Configurazione TLS.
- Per Certificato PEM attendibile, inserisci il certificato pubblico dell'autorità di certificazione (CA) che ha emesso il certificato TLS del server di database. Per scoprire di più, vedi Certificato del server attendibile (PEM).
- Per Attiva mappatura legacy, seleziona true (impostazione predefinita) per utilizzare la mappatura dei tipi di dati legacy. Seleziona false per utilizzare la mappatura aggiornata dei tipi di dati. Se stai eseguendo un trasferimento incrementale, questo valore deve essere false. Per saperne di più sugli aggiornamenti della mappatura dei tipi di dati, vedi 16 marzo 2027.
- Per Tipo di importazione, seleziona Completa o Incrementale.
- Se selezioni Incrementale (Anteprima), per Modalità di scrittura, seleziona Aggiungi o Esegui upsert. Per saperne di più sulle diverse modalità di scrittura, consulta Trasferimenti completi o incrementali.
Per Oggetti MySQL da trasferire, fai clic su Sfoglia.
Seleziona gli oggetti da trasferire al set di dati di destinazione BigQuery. In questo campo puoi anche inserire manualmente gli oggetti da includere nel trasferimento di dati.
- Se hai selezionato Aggiungi come modalità di scrittura incrementale, devi selezionare una colonna come colonna watermark.
- Se hai selezionato Esegui upsert come modalità di scrittura incrementale, devi selezionare una colonna come colonna watermark, e poi una o più colonne come chiave primaria.
Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
Nella sezione Opzioni di pianificazione, segui questi passaggi:
- Seleziona una frequenza di ripetizione. Se selezioni l'opzione Ore, Giorni (predefinita), Settimane o Mesi, devi anche specificare una frequenza. Puoi anche selezionare l'opzione Personalizzata per creare una frequenza di ripetizione più specifica. Se selezioni l'opzione On demand, questo trasferimento di dati viene eseguito solo quando attivi manualmente il trasferimento.
- Se applicabile, seleziona l'opzione Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
Nella sezione Impostazioni destinazione, per Set di dati, seleziona il set di dati che hai creato per archiviare i dati o fai clic su Crea nuovo set di dati e creane uno da utilizzare come set di dati di destinazione.
(Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:
- Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifiche email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
- Per configurare le notifiche di esecuzione di Pub/Sub per il trasferimento, fai clic sul pulsante di attivazione/disattivazione Notifiche Pub/Sub. Puoi selezionare il nome del tuo argomento oppure fare clic su Crea un argomento per crearne uno.
Fai clic su Salva.
bq
Inserisci il comando bq mk e fornisci il flag di creazione del trasferimento --transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
Sostituisci quanto segue:
- PROJECT_ID (facoltativo): l'ID progetto Google Cloud .
Se il flag
--project_idnon viene fornito per specificare un progetto particolare, viene utilizzato il progetto predefinito. - DATA_SOURCE: l'origine dati, ovvero
mysql. - DISPLAY_NAME: il nome visualizzato della configurazione del trasferimento di dati. Il nome del trasferimento può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
- DATASET: il set di dati di destinazione per la configurazione del trasferimento di dati.
PARAMETERS: i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio:
--params='{"param":"param_value"}'. Di seguito sono riportati i parametri per un trasferimento MySQL:connector.networkAttachment(facoltativo): il nome del collegamento di rete per connettersi al database MySQL.connector.database: il nome del database MySQL.connector.endpoint.host: il nome host o l'indirizzo IP del database.connector.endpoint.port: il numero di porta del database.connector.authentication.username: il nome utente dell'utente del database.connector.authentication.password: la password dell'utente del database. connector.connectionTypeconnector.connectionType(facoltativo): il tipo di connessione per determinare l'URL di connessione. Può essereSERVICE,SIDoTNS. Se non viene fornito, il valore predefinito èSERVICE.connector.legacyMapping: imposta sutrue(impostazione predefinita) per utilizzare la mappatura dei tipi di dati legacy. Imposta sufalseper utilizzare la mappatura dei tipi di dati aggiornata. Se stai eseguendo un trasferimento incrementale, questo valore deve esserefalse. Per saperne di più sugli aggiornamenti della mappatura dei tipi di dati, vedi 16 marzo 2027.connector.tls.mode: specifica una configurazione TLS da utilizzare con questo trasferimento:ENCRYPT_VERIFY_CA_AND_HOSTper crittografare i dati e verificare la CA e il nome hostENCRYPT_VERIFY_CAper crittografare i dati e verificare solo la CAENCRYPT_VERIFY_NONEsolo per la crittografia dei datiDISABLEper nessuna crittografia o verifica
connector.tls.trustedServerCertificate: (facoltativo) fornisci uno o più certificati con codifica PEM. Obbligatorio solo seconnector.tls.modeèENCRYPT_VERIFY_CA_AND_HOSToENCRYPT_VERIFY_CA.ingestionType: specificafulloincremental. I trasferimenti incrementali sono supportati in anteprima. Per saperne di più, consulta Trasferimenti completi o incrementali.writeMode: specificaWRITE_MODE_APPENDoWRITE_MODE_UPSERT.watermarkColumns: specifica le colonne della tabella come colonne di watermark. Questo campo è obbligatorio per i trasferimenti incrementali.primaryKeys: specifica le colonne della tabella come chiavi primarie. Questo campo è obbligatorio per i trasferimenti incrementali.assets: un elenco dei nomi delle tabelle MySQL da trasferire dal database MySQL nell'ambito del trasferimento.
Ad esempio, il seguente comando crea un trasferimento MySQL denominato My Transfer:
bq mk --transfer_config --target_dataset=mydataset --data_source=mysql --display_name='My Transfer' --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.encryptionMode":"FULL", "connector.database":"DB1", "connector.endpoint.host":"54.74.220.23", "connector.endpoint.port":3306 "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']], "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
Quando specifichi più asset durante un trasferimento incrementale, i valori dei campi watermarkColumns e primaryKeys corrispondono alla posizione dei valori nel campo assets. Nell'esempio seguente,
dep_id corrisponde alla tabella DB1/USER1/DEPARTMENT, mentre report_by
e report_title corrispondono alla tabella DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
API
Utilizza il
metodo projects.locations.transferConfigs.create
e fornisci un'istanza della
risorsa TransferConfig.
Per eseguire manualmente un trasferimento di dati al di fuori della pianificazione regolare, puoi avviare un'esecuzione di backfill.
Risoluzione dei problemi
Se riscontri problemi durante la configurazione del trasferimento di dati, consulta Problemi di trasferimento di MySQL.
Metadati di trasferimento
Puoi anche utilizzare il connettore MySQL per trasferire i metadati a Knowledge Catalog. Per saperne di più, consulta Carica i metadati MySQL in Knowledge Catalog.Passaggi successivi
- Leggi una panoramica di BigQuery Data Transfer Service.
- Scopri di più sulla gestione dei trasferimenti, ad esempio su come ottenere informazioni su una configurazione di trasferimento, elencare le configurazioni di trasferimento e visualizzare la cronologia di esecuzione di un trasferimento.
- Scopri come caricare i dati con le operazioni di BigQuery Omni.