Caricare dati MySQL in BigQuery

Puoi caricare i dati da MySQL a BigQuery utilizzando il connettore BigQuery Data Transfer Service per MySQL. Supporta istanze MySQL ospitate nel tuo ambiente on-premise, in Cloud SQL e in altri provider cloud pubblico come Amazon Web Services (AWS) e Microsoft Azure. Con BigQuery Data Transfer Service, puoi pianificare job di trasferimento ricorrenti che aggiungono i dati più recenti da MySQL a BigQuery.

Prima di iniziare

Ruoli obbligatori

Se intendi configurare le notifiche di esecuzione del trasferimento per Pub/Sub, assicurati di disporre dell'autorizzazione pubsub.topics.setIamPolicy Identity and Access Management (IAM). 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.

Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati MySQL, chiedi all'amministratore di concederti il ruolo IAM BigQuery Admin (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 MySQL. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare un trasferimento di dati MySQL sono necessarie le seguenti autorizzazioni:

  • bigquery.transfers.update
  • bigquery.datasets.get

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

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:

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.
  • In MySQL, alcuni tipi di dati vengono mappati al tipo di stringa in BigQuery per evitare la perdita di dati. Ad esempio, i tipi numerici definiti in MySQL che non hanno una precisione e una scala definite vengono mappati al tipo stringa in BigQuery.

Caricare dati MySQL in BigQuery

Seleziona una delle seguenti opzioni:

Console

  1. Vai alla pagina Trasferimenti di dati.

    Vai a Trasferimenti dati

  2. Fai clic su Crea trasferimento.

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

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

  5. 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 Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
  6. 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.

  7. 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 per il server di database MySQL.
    • In Nome database, inserisci il nome del database MySQL.
    • In Nome utente, inserisci il nome utente 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 Encryption mode (Modalità di crittografia), seleziona Full (Completa) dal menu per attivare la convalida SSL completa quando ti connetti al database MySQL oppure seleziona Disable (Disabilita) per disabilitare la convalida SSL.
    • Per Oggetti MySQL da trasferire, procedi in uno dei seguenti modi:

      • Fai clic su Sfoglia per selezionare le tabelle MySQL necessarie per il trasferimento, quindi fai clic su Seleziona.
      • Inserisci manualmente i nomi delle tabelle negli oggetti MySQL da trasferire.

    Dettagli dell'origine dati nella pagina Crea trasferimento

  8. (Facoltativo) Nel menu Service account, specifica un account di servizio personalizzato per autorizzare il trasferimento. Assicurati che il service account utilizzato disponga di tutti i ruoli e le autorizzazioni necessari. Per ulteriori informazioni, vedi Trasferire la proprietà come service account.

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

    • Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifiche via email in modo da attivarlo. 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 attivarlo. Puoi selezionare il nome del tuo argomento o fare clic su Crea un argomento per crearne uno.
  10. 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:

  • (Facoltativo) PROJECT_ID: il tuo ID progetto Google Cloud . 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 dei 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 dei dati.
  • PARAMETERS: i parametri per la configurazione del trasferimento creato in formato JSON. Ad esempio: --params='{"param":"param_value"}'. Di seguito sono riportati i parametri per un trasferimento MySQL:

    • networkAttachment (facoltativo): il nome dell'allegato 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.encryptionMode: la modalità di crittografia. Può essere FULL per la convalida SSL completa quando ti connetti al database MySQL oppure DISABLE per disabilitare la convalida SSL.
    • 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}'

API

Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Mappatura dei tipi di dati

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

Tipo di dati MySQL Tipo di dati BigQuery
BIT BOOLEAN
TINYINT INTEGER
BOOL, BOOLEAN BOOLEAN
SMALLINT INTEGER
MEDIUMINT INTEGER
INT, INTEGER INTEGER
BIGINT BIGNUMERIC
FLOAT FLOAT
DOUBLE FLOAT
DECIMAL BIGNUMERIC
DATE DATE
DATETIME TIMESTAMP
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

Risoluzione dei problemi

Se riscontri problemi durante la configurazione del trasferimento dei dati, consulta Problemi di trasferimento di MySQL.

Passaggi successivi