Utilizza Datastream con una tabella BigQuery esistente

In questa pagina vengono descritte le best practice per i casi d'uso in cui:

  • Gli utenti hanno già una tabella in BigQuery e devono replicare i propri dati utilizzando Change Data Capture (CDC) nella stessa tabella BigQuery.
  • Gli utenti devono copiare i dati in una tabella BigQuery esistente senza utilizzare la funzionalità di backfill di Datastream, a causa del tempo necessario o di limitazioni dei prodotti.

Problema

Una tabella BigQuery compilata utilizzando l'API BigQuery Storage Write non consente normali operazioni DML (Data Manipulation Language). Ciò significa che, una volta che un flusso CDC inizia a scrivere in una tabella BigQuery, non è più possibile aggiungere dati storici che non siano già stati precompilati nella tabella.

Considera il seguente scenario:

  1. TIMESTAMP 1: viene avviata l'operazione di copia della tabella.
  2. TIMESTAMP 2: durante la copia della tabella, le operazioni DML all'origine comportano modifiche ai dati (le righe vengono aggiunte, aggiornate o rimosse).
  3. TIMESTAMP 3: la CDC viene avviata. Le modifiche apportate in TIMESTAMP 2 non vengono acquisite, causando una discrepanza nei dati.

Soluzione

Per garantire l'integrità dei dati, il processo CDC deve acquisire tutte le modifiche nell'origine che si sono verificate dal momento immediatamente successivo all'ultimo aggiornamento effettuato che è stato copiato nella tabella BigQuery.

La soluzione seguente ti permette di assicurarti che il processo CDC acquisisca tutte le modifiche da TIMESTAMP 2, senza impedire all'operazione di copia di scrivere dati nella tabella BigQuery.

Prerequisiti

  • La tabella di destinazione in BigQuery deve avere esattamente lo stesso schema e la stessa configurazione della tabella creata da Datastream. A questo scopo, puoi utilizzare il Toolkit di migrazione di Datastream BigQuery.
  • Per le origini MySQL e Oracle, l'utente deve essere in grado di identificare la posizione del log al momento dell'avvio dell'operazione di copia.
  • Il database deve avere un criterio di conservazione dei log e di spazio di archiviazione sufficiente per consentire il completamento del processo di copia delle tabelle.

Origini MySQL e Oracle

  1. Crea, ma non avviare il flusso che intendi utilizzare per la replica CDC in corso. Lo stream deve essere nello stato CREATO.
  2. Quando è tutto pronto per avviare l'operazione di copia della tabella, identifica la posizione attuale del log del database:
    • Per MySQL, consulta la documentazione di MySQL per scoprire come ottenere le coordinate del log binario di replica. Una volta identificata la posizione del log, chiudi la sessione per rilasciare eventuali blocchi sul database.
    • Per Oracle, esegui la query seguente: SELECT current_scn FROM V$DATABASE
  3. Copia la tabella dal database di origine in BigQuery.
  4. Una volta completata l'operazione di copia, segui i passaggi descritti nella pagina Gestisci flussi per avviare il flusso dalla posizione del log identificata in precedenza.

Origini PostgreSQL

  1. Quando è tutto pronto per iniziare a copiare la tabella, crea lo slot di replica. Per ulteriori informazioni, consulta Configurare un database PostgreSQL di origine.
  2. Copia la tabella dal database di origine in BigQuery.
  3. Una volta completata l'operazione di copia, crea e avvia lo stream.