Caricare i dati MySQL in BigQuery

Per pianificare trasferimenti di dati ricorrenti da MySQL a BigQuery, puoi creare una configurazione di trasferimento per specificare gli oggetti dati da trasferire e la frequenza con cui pianificare il trasferimento di dati. Dopo aver configurato la configurazione del trasferimento, il BigQuery Data Transfer Service trasferisce i dati più recenti in una tabella BigQuery in base alla pianificazione specificata.

Per scoprire di più sul funzionamento di un trasferimento 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 con un limite più elevato, 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 di trasferimento di dati alla volta. Se è pianificata l'esecuzione di un secondo trasferimento di dati prima del completamento del primo, solo il primo trasferimento di dati viene completato, mentre tutti gli altri trasferimenti di dati che si sovrappongono al primo vengono ignorati.
    • Per evitare trasferimenti ignorati all'interno di una singola configurazione del trasferimento, ti consigliamo di aumentare la durata del 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 delle chiavi indicizzate e partizionate per trasferire i dati in batch paralleli. Per questo motivo, ti consigliamo di specificare le colonne chiave primaria o di utilizzare le colonne indicizzate nella tabella per migliorare il rendimento e ridurre la percentuale di errori nei trasferimenti di dati.
    • Se hai vincoli di chiave primaria o indicizzate, per la creazione di batch paralleli sono supportati solo i seguenti tipi di colonne:
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • I trasferimenti di dati MySQL che non utilizzano colonne di chiave primaria o indicizzate non possono supportare più di 2.000.000 di record per tabella.

Limitazioni del trasferimento incrementale

I trasferimenti incrementali MySQL sono soggetti alle seguenti limitazioni:

  • Puoi scegliere solo le colonne TIMESTAMP come colonne watermark.
  • L'importazione incrementale è supportata solo per gli asset con colonne watermark valide.
  • I valori in una colonna watermark devono aumentare in modo monotono.
  • 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 asset dopo la prima esecuzione di importazione incrementale.
  • Non puoi modificare la modalità di scrittura in una configurazione del trasferimento dopo la prima esecuzione di importazione incrementale.
  • Non puoi modificare la colonna watermark o la chiave primaria dopo la prima esecuzione di importazione incrementale.
  • La tabella BigQuery di destinazione è in cluster utilizzando la chiave primaria fornita ed è soggetta alle limitazioni delle tabelle in cluster.
  • Quando aggiorni per la prima volta una configurazione del trasferimento esistente alla modalità di importazione incrementale, 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 watermark. Questo connettore utilizza le colonne watermark per i filtri nei trasferimenti incrementali, pertanto l'indicizzazione di queste colonne può migliorare il rendimento.

  • Quando esegui un trasferimento incrementale, devi utilizzare la mappatura aggiornata dei tipi di dati.

Prima di iniziare

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 di amministratore BigQuery (roles/bigquery.admin) nel tuo 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 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 BigQuery Data Transfer Service sono necessarie le seguenti autorizzazioni:

  • Autorizzazioni 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 Concedere l'accesso 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:

Caricare i dati MySQL in BigQuery

Aggiungi i dati MySQL a BigQuery configurando una configurazione del trasferimento utilizzando una delle seguenti opzioni:

Console

  1. Vai alla pagina Trasferimenti di dati.

    Vai a Trasferimenti di dati

  2. Fai clic su Crea trasferimento.

  3. Nella sezione Tipo di origine, per Origine, seleziona MySQL.

  4. 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 di database MySQL.
    • In Numero di 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 utente dell'utente MySQL user 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 , consulta 16 marzo 2027.
    • Per Tipo di importazione, seleziona Completa o Incrementale.
    • Per Oggetti MySQL da trasferire, fai clic su Sfoglia.

      Seleziona gli oggetti da trasferire al set di dati di destinazione BigQuery. Puoi anche inserire manualmente gli oggetti da includere nel trasferimento di dati in questo campo.

      • 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.
  5. 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.

  6. Nella sezione Opzioni di pianificazione, segui questi passaggi:

    • Seleziona una frequenza di ripetizione. Se selezioni l'opzione Ore, Giorni (impostazione 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 Avvia ora o Avvia a un'ora prestabilita e fornisci una data di inizio e un'ora di esecuzione.
  7. Nella sezione Impostazioni destinazione , per Set di dati, seleziona il set di dati che hai creato per archiviare i dati oppure fai clic su Crea nuovo set di dati e creane uno da utilizzare come set di dati di destinazione.

  8. (Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:

    • Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifiche email per portarlo in posizione di attivazione. 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 per portarlo in posizione di attivazione. Puoi selezionare il tuo argomento nome o fare clic su Crea un argomento per crearne uno.
  9. Fai clic su Salva.

bq

Inserisci il bq mk comando 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' Google Cloud ID progetto. Se non viene fornito il flag --project_id per specificare un progetto particolare, viene utilizzato il progetto predefinito.
  • DATA_SOURCE: l'origine dati, ovvero mysql.
  • DISPLAY_NAME: il nome visualizzato per la 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 a cui 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.connectionType
    • connector.connectionType (facoltativo): il tipo di connessione per determinare l'URL di connessione. Può essere SERVICE, SID o TNS. Se non viene fornito, il valore predefinito è SERVICE.
    • connector.legacyMapping: imposta su true (impostazione predefinita) per utilizzare la mappatura dei tipi di dati legacy. Imposta su 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 , consulta 16 marzo 2027.
    • connector.tls.mode: specifica una configurazione TLS da utilizzare con questo trasferimento:
      • ENCRYPT_VERIFY_CA_AND_HOST per crittografare i dati e verificare la CA e il nome host
      • ENCRYPT_VERIFY_CA per crittografare i dati e verificare solo la CA
      • ENCRYPT_VERIFY_NONE solo per la crittografia dei dati
      • DISABLE per nessuna crittografia o verifica
    • connector.tls.trustedServerCertificate: (facoltativo) fornisci uno o più certificati con codifica PEM. Obbligatorio solo se connector.tls.mode è ENCRYPT_VERIFY_CA_AND_HOST o ENCRYPT_VERIFY_CA.
    • ingestionType: specifica full o incremental. I trasferimenti incrementali sono supportati in anteprima. Per saperne di più, consulta Trasferimenti completi o incrementali.
    • writeMode: specifica WRITE_MODE_APPEND o WRITE_MODE_UPSERT.
    • watermarkColumns: specifica le colonne della tabella come colonne 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 projects.locations.transferConfigs.create metodo e fornisci un'istanza della TransferConfig risorsa.

Quando salvi la configurazione del trasferimento, il connettore MySQL attiva automaticamente un'esecuzione del trasferimento in base all'opzione di pianificazione. A ogni esecuzione del trasferimento, il connettore MySQL trasferisce tutti i dati disponibili da MySQL a BigQuery.

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 MySQL.

Trasferire i metadati

Puoi anche utilizzare il connettore MySQL per trasferire i metadati a Knowledge Catalog. Per saperne di più, consulta Caricare i metadati MySQL in Knowledge Catalog.

Passaggi successivi