Condividi tramite


Aggiungi la sorgente CDC del database MySQL a un eventstream

Questo articolo illustra come aggiungere una sorgente di acquisizione modifiche dati MySQL a un flusso di eventi.

Il connettore Azure Cdc (Database Change Data Capture) del database MySQL consente di acquisire uno snapshot dei dati correnti in un database MySQL Azure. Specificare le tabelle da monitorare e ricevere un avviso quando vengono apportate modifiche successive a livello di riga alle tabelle. Dopo aver acquisito le modifiche in un flusso, è possibile elaborare questi dati CDC in tempo reale e inviarli a destinazioni diverse all'interno di Fabric per ulteriori elaborazioni o analisi.

Attualmente MySQL Database CDC è supportato dai servizi seguenti a cui è possibile accedere pubblicamente ai database:

  • Database di Azure per MySQL
  • Amazon RDS per MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL per MySQL (GCP).

Questa guida usa Database di Azure per MySQL CDC come esempio.

Dopo aver aggiunto l'origine CDC del database MySQL al flusso di eventi, rileva le modifiche a livello di riga alle tabelle specificate. Queste modifiche possono quindi essere elaborate in tempo reale e inviate a destinazioni diverse per ulteriori analisi.

Prerequisiti

  • Accesso a un'area di lavoro in modalità licenza di capacità di Fabric o in modalità licenza di valutazione con permessi di Collaboratore o superiori.
  • Accesso a un'istanza del database MySQL, ad esempio un database in Database di Azure per MySQL - Server flessibile.
  • Il database MySQL deve essere accessibile pubblicamente e non essere protetto da un firewall o protetto in una rete virtuale. Se si trova in una rete protetta, connettersi utilizzando il connettore Eventstream per l'inserimento della rete virtuale.
  • Se non si dispone di un flusso di eventi, creare un flusso di eventi.

Configurare il database MySQL

Il connettore usa il connettore Debezium MySQL per acquisire le modifiche nel database MySQL. È necessario definire un utente MySQL con privilegi appropriati per tutti i database da cui Messaging Connector può acquisire le modifiche. È possibile usare direttamente l'utente amministratore per connettersi al database, che in genere dispone dei privilegi appropriati oppure seguire questa procedura per creare un nuovo utente:

Nota

Il nuovo account utente o amministratore e la password corrispondente vengono usati per connettersi al database in un secondo momento all'interno di Eventstream.

  1. Al prompt dei comandi mysql, crea l'utente MySQL:

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. Concedere i privilegi necessari all'utente:

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION REPLICA, REPLICATION CLIENT ON *.* TO 'user'@'%';
    

    Nota

    Quando un blocco di lettura globale non è disponibile, come nelle opzioni ospitate, ad esempio Amazon Relational Database Service (RDS) o Aurora, vengono usati blocchi a livello di tabella per creare lo snapshot coerente. In questo caso, è necessario concedere LOCK TABLES l'autorizzazione all'utente. Inoltre, per supportare FLUSH durante le operazioni dello snapshot, potrebbe essere necessario concedere RELOAD o FLUSH_TABLES i privilegi.

  3. Finalizzare le autorizzazioni dell'utente:

    mysql> FLUSH PRIVILEGES;
    

Per verificare se all'utente o all'amministratore sono concessi i privilegi necessari, eseguire questo comando e quindi visualizzare i privilegi necessari nel passaggio 2:

SHOW GRANTS FOR user;

Per altre informazioni sulla concessione delle autorizzazioni necessarie all'utente, vedere Connettore Debezium per MySQL: Documentazione Debezium.

Abilitare il binlog

È necessario abilitare la registrazione binaria per la replica MySQL. I log binari registrano gli aggiornamenti delle transazioni affinché gli strumenti di replica possano propagare le modifiche. Questa sezione usa Database di Azure per MySQL CDC come esempio per illustrare i passaggi di configurazione.

  1. Nella pagina del portale di Azure per l'account Database di Azure per MySQL, selezionare parametri server sotto Impostazioni nel riquadro di spostamento a sinistra.

  2. Nella pagina Parametri server, configurare le seguenti impostazioni, quindi selezionare Salva.

    • Per binlog_row_image, seleziona full.

    • Per binlog_expire_logs_seconds, impostare il numero di secondi di attesa del servizio prima che il file di log binario venga rimosso definitivamente. Impostare il valore in base alle esigenze dell'ambiente, ad esempio 86400.

    Screenshot delle impostazioni binlog per la replica in Parametri del server.

Aggiungere il database MySQL (DB) Change Data Capture (CDC) come sorgente

Se non è ancora stata aggiunta alcuna origine al flusso di eventi, selezionare il riquadro Connetti origini dati . È anche possibile selezionare Aggiungi origine>Connetti origini dati sulla barra multifunzione.

Screenshot che mostra la selezione del tile per usare un'origine esterna.

Se si aggiunge l'origine a un flusso di eventi già pubblicato, passare alla modalità Modifica. Sulla barra multifunzione selezionare Aggiungi origine>Connetti origini dati.

Screenshot che mostra le selezioni per l'aggiunta di fonti esterne.

Nella pagina Selezionare un'origine dati, cercare e selezionare Connetti nel riquadro MySQL DB (CDC).

Screenshot che mostra la selezione di Database MySQL (CDC) come tipo di origine nella procedura guidata Recupera eventi.

Configurare e connettersi al database MySQL (CDC)

  1. Nella schermata Connetti selezionare Nuova connessione in Connessione per creare una connessione cloud.

    Screenshot che mostra la pagina Connect.

  2. Immettere le impostazioni di connessione seguenti e Le credenziali di connessione per il database MySQL e quindi selezionare Connetti.

    • Server: L'indirizzo del server del database MySQL, ad esempio my-mysql-server.mysql.database.azure.com.

    • Database: nome del database, ad esempio mio_database.

    • Nome connessione: generato automaticamente oppure è possibile immettere un nuovo nome per questa connessione.

    • nome utente e password: immettere le credenziali per il database MySQL. Assicurarsi di immettere l'account amministratore del server o l'account utente creato con privilegi necessari concessi.

      A screenshot delle impostazioni di connessione per Azure Database MySQL (DB) Change Data Capture (CDC).

  3. Immettere le seguenti informazioni per configurare il database MySQL come origine dati CDC e quindi selezionare Avanti.

    • Porta: il valore predefinito è 3306. Se la connessione cloud selezionata è configurata in Gestire connessioni e gateway, assicurarsi che il numero di porta corrisponda a quello impostato. Se non corrispondono, il numero di porta nella connessione cloud in Gestisci connessioni e gateway ha la precedenza.

    • tabella: Selezionare Tutte le tabelle o Immettere il nome della tabella. Se si seleziona quest'ultimo, specificare le tabelle usando un elenco delimitato da virgole di identificatori di tabella completi (databaseName.tableName) o espressioni regolari valide. Per esempio:

      • Usare databaseName.test.* per selezionare tutte le tabelle i cui nomi iniziano con databaseName.test.
      • Usare databaseName\.(test1|test2) per selezionare databaseName.test1 e databaseName.test2.

      È possibile combinare entrambi i formati usando virgole. Il limite di caratteri totale per l'intera voce è di 102.400 caratteri.

    • ID server: immettere un valore univoco per ogni server e client di replica nel cluster MySQL. Il valore predefinito è 1000.

    Nota

    Impostare un ID server diverso per ogni lettore. Ogni client di database MySQL per la lettura di binlog deve avere un ID univoco, denominato ID server. MySQL Server usa questo ID per mantenere la connessione di rete e la posizione binlog. Diversi processi che condividono lo stesso ID server possono portare a leggere dalla posizione errata del binlog. È quindi consigliabile impostare un ID server diverso per ogni lettore.

  4. È possibile espandere Impostazioni avanzate per accedere ad altre opzioni di configurazione per l'origine CDC del database MySQL:

    • Modalità di blocco dello snapshot: le opzioni sono:
      • Minimal (default): contiene un blocco di lettura globale solo durante la fase iniziale per acquisire lo schema e i metadati. Il resto dello snapshot usa una transazione REPEATABLE READ, consentendo aggiornamenti durante la lettura dei dati.
      • Extended: mantiene un blocco di lettura globale per l'intera durata dello snapshot, bloccando tutte le scritture. Usare per una coerenza completa qualora il blocco di scrittura sia accettabile.
      • None: ignora l'acquisizione di blocchi di tabella durante lo snapshot. Sicuro solo se non si verificano modifiche dello schema durante il processo.
    • Modalità di gestione decimale: specifica il modo in cui il connettore gestisce DECIMAL e NUMERIC i valori delle colonne:
      • Precise: rappresenta i valori usando tipi decimali esatti (ad esempio, Java BigDecimal) per garantire la precisione completa e l'accuratezza nella rappresentazione dei dati.
      • Double: converte i valori in numeri a virgola mobile e precisione doppia. Questa opzione migliora l'usabilità e le prestazioni, ma può comportare una perdita di precisione.
      • String: codifica i valori come stringhe formattate. Questa opzione semplifica l'utilizzo nei sistemi downstream, ma perde informazioni semantiche sul tipo numerico originale.
    • Modalità snapshot: specificare i criteri per l'esecuzione di uno snapshot all'avvio del connettore:
      • Initial: il connettore esegue uno snapshot solo quando non sono stati registrati offset per il nome del server logico o se rileva che non è stato completato uno snapshot precedente. Al termine dello snapshot, il connettore inizia a trasmettere i record degli eventi per le modifiche successive al database.
      • InitialOnly: il connettore esegue uno snapshot solo quando per il nome del server logico non sono stati registrati offset. Al termine dello snapshot, il connettore si arresta. Non esegue la transizione allo streaming per leggere gli eventi di modifica dal binlog.
      • NoData: il connettore esegue uno snapshot che acquisisce solo lo schema, ma non i dati della tabella. Impostare questa opzione se non è necessario uno snapshot coerente dei dati, ma sono necessarie solo le modifiche apportate dall'avvio del connettore.

Dettagli del flusso o della sorgente

  1. Nella pagina Connetti seguire uno di questi passaggi in base al fatto che si usi Eventstream o Real-Time hub.

    • Eventstream:

      Nel riquadro Dettagli origine a destra seguire questa procedura:

      1. In Nome origine selezionare il pulsante Matita per modificare il nome.

      2. Si noti che il Nome Eventstream e il Nome del flusso sono di sola lettura.

    • Hub in tempo reale:

      Nella sezione Dettagli flusso a destra seguire questa procedura:

      1. Selezionare l'area di lavoro Fabric in cui si vuole creare il flusso di eventi.

      2. Per Nome flusso di eventi, selezionare il pulsante Matita e immettere un nome per il flusso di eventi.

      3. Il valore del nome stream viene generato automaticamente aggiungendo -stream al nome del flusso di eventi. Questo flusso viene visualizzato nella pagina Tutti i flussi di dati dell'hub in tempo reale al termine della procedura guidata.

  2. Selezionare Avanti nella parte inferiore della pagina Configura .

Rivedere e connettere

Nella schermata Rivedi e connetti esaminare il riepilogo e selezionare Aggiungi (Eventstream) o Connetti ( hubReal-Time).

Visualizzare il flusso di eventi aggiornato

  1. Puoi vedere la sorgente del database MySQL (CDC) aggiunta al tuo flusso di eventi in modalità Modifica.

    Uno screenshot della fonte CDC per Azure MySQL DB aggiunta in modalità Modifica con il pulsante Pubblica evidenziato.

  2. Selezionare Pubblica per pubblicare le modifiche e avviare lo streaming dei dati CDC del database MySQL nel flusso di eventi.

    Uno screenshot dell'origine CDC del database Azure MySQL aggiunta in modalità Live.

Altri connettori: