Usa Datastream con una tabla de BigQuery existente

Cuando un relleno estándar de Datastream tarda demasiado o tiene limitaciones de productos, puedes copiar los datos iniciales en una tabla de BigQuery existente por separado. La transmisión de actualizaciones de captura de datos modificados (CDC) a BigQuery desde una posición de registro específica te permite mantener la tabla sincronizada sin ejecutar un relleno integrado.

Problema

Una tabla de BigQuery que se propaga con la API de BigQuery Storage Write no permite operaciones normales del lenguaje de manipulación de datos (DML). Esto significa que, después de que una transmisión de CDC comienza a escribir en una tabla de BigQuery, no hay forma de agregar datos históricos que aún no se hayan propagado en la tabla.

Considera la siguiente situación:

  1. TIMESTAMP 1: Se inicia la operación de copia de la tabla.
  2. TIMESTAMP 2: Mientras se copia la tabla, las operaciones de DML en la fuente provocan cambios en los datos (se agregan, actualizan o quitan filas).
  3. TIMESTAMP 3: Comienza la CDC, pero no se capturan los cambios que ocurrieron durante TIMESTAMP 2, lo que genera una discrepancia en los datos.

Solución

Para garantizar la integridad de los datos, el proceso de CDC debe capturar todos los cambios en la fuente que ocurrieron desde el momento inmediatamente posterior a la última actualización realizada que se copió en la tabla de BigQuery.

La siguiente solución te permite garantizar que el proceso de CDC capture todos los cambios de TIMESTAMP 2, sin bloquear la operación de copia para escribir datos en la tabla de BigQuery.

Requisitos previos

  • La tabla de destino en BigQuery debe tener el mismo esquema y configuración que si Datastream la hubiera creado. Puedes usar el kit de herramientas de migración de BigQuery de Datastream para lograrlo.
  • Para las fuentes de MySQL y Oracle, debes poder identificar la posición del registro en el momento en que se inicia la operación de copia.
  • La base de datos debe tener suficiente almacenamiento y una política de retención de registros adecuada para permitir que se complete el proceso de copia de la tabla.

Fuentes de MySQL y Oracle

  1. Crea, pero no inicies la transmisión que deseas usar para la replicación continua de CDC. La transmisión debe estar en el estado CREATED.
  2. Cuando esté todo listo para iniciar la operación de copia de la tabla, identifica la posición actual del registro de la base de datos:
    • Para MySQL, consulta la documentación de MySQL para obtener información sobre cómo obtener las coordenadas del registro binario de replicación. Después de identificar la posición del registro, cierra la sesión para liberar cualquier bloqueo en la base de datos.
    • Para Oracle, ejecuta la siguiente consulta: SELECT current_scn FROM V$DATABASE.
  3. Copia la tabla de la base de datos de origen a BigQuery.
  4. Una vez que se complete la operación de copia, sigue los pasos que se describen en la página Administra transmisiones para iniciar la transmisión desde la posición del registro que identificaste antes.

Fuentes de PostgreSQL

  1. Cuando esté todo listo para comenzar a copiar la tabla, crea el slot de replicación. Para obtener más información, consulta Configura una base de datos PostgreSQL de origen.
  2. Copia la tabla de la base de datos de origen a BigQuery.
  3. Una vez que se complete la operación de copia, crea e inicia la transmisión.