Cómo migrar una tabla de CDC a otra región

En esta página, se describen las prácticas recomendadas para un caso de uso en el que configuraste la replicación de Datastream a BigQuery, pero configuraste conjunto de datos de destino en una región incorrecta. Luego, quieres mover el conjunto de datos a otra región (o multirregión) sin tener que volver a sincronizar todos los datos de la base de datos de origen con BigQuery.

Antes de comenzar

Antes de comenzar a migrar tus datos a otra región, ten en cuenta lo siguiente:

  • La migración lleva tiempo y debes pausar temporalmente la transmisión durante la operación. Para mantener la integridad de los datos, la base de datos de origen debe retener los registros de cambios cuando se pausa la transmisión. Para estimar durante cuánto tiempo se debe pausar la transmisión, combina el valor de max_staleness en el conjunto de datos y la operación de combinación más larga:
    • Para obtener información sobre cuánto pueden tardar las operaciones de combinación Cuando finalice, consulta Valor recomendado para max_staleness de la tabla.
    • Para encontrar el valor máximo de max_staleness en el conjunto de datos, consulta la siguiente información: Determina el valor max_staleness actual de una tabla y ajusta la consulta a tus necesidades específicas.
    • Si la pausa estimada es demasiado larga para que la base de datos de origen la admita, considera reducir temporalmente el valor de max_staleness. para las tablas del conjunto de datos.
  • Verifica que el usuario que realiza la migración tenga suficientes recursos de BigQuery en la región de destino (reserva de consultas y reserva en segundo plano). Para obtener más información sobre las reservas, consulta Asignaciones de reserva.
  • Verifica que el usuario que realiza la migración tenga los permisos suficientes para realizar esta operación, como los controles de Identity and Access Management (IAM) o Controles del servicio de VPC.

Pasos para la migración

Para iniciar la migración de conjuntos de datos, usar la replicación de datos de BigQuery:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery Studio

  2. Crea una réplica del conjunto de datos de BigQuery en la región nueva:

    ALTER SCHEMA DATASET_NAME
    ADD REPLICA 'NEW_REGION'
    OPTIONS(location='NEW_REGION');
    

    Reemplaza lo siguiente:

    • DATASET_NAME: Es el nombre del conjunto de datos que deseas crear.
    • NEW_REGION: Es el nombre de la región en la que deseas crear la de tu conjunto de datos. Por ejemplo, region-us
  3. Supervisa el progreso de la migración y espera a que la marca de agua de la copia en la réplica esté a pocos minutos de la principal. Puedes ejecutar esta consulta en la clase INFORMATION_SCHEMA de BigQuery para verificar el progreso de la migración:

    SELECT
    catalog_name as project_id,
    schema_name as dataset_name,
    replication_time as dataset_replica_staleness
    FROM
    'NEW_REGION'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS
    WHERE
    catalog_name = PROJECT_ID
    AND schema_name = DATASET_NAME
    AND location = NEW_REGION;
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • DATASET_NAME: es el nombre de tu conjunto de datos.
    • DATASET_REPLICA_STALENESS: Es la configuración de inactividad de las tablas en la réplica del conjunto de datos que creaste.
    • NEW_REGION: Es la región en la que creaste el conjunto de datos.
  4. Pausa la transmisión existente de Datastream. Para obtener más información, consulta Pausa la transmisión.

  5. Espera a que la transmisión se desvíe y toma nota de la hora a la que esta ingresó al PAUSED.

  6. Confirma que los cambios más recientes de CDC se hayan aplicado a BigQuery de la tabla marcando el ícono upsert_stream_apply_watermark para la mesa. Ejecuta la siguiente consulta y asegúrate de que la marca de tiempo Es 10 minutos después, cuando se pausó la transmisión:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Para ejecutar la consulta solo de una tabla específica, agrega la siguiente cláusula WHERE:

    WHERE table_name = 'TABLE_NAME'
    

    Reemplaza lo siguiente:

    • DATASET_NAME: es el nombre de tu conjunto de datos.
    • TABLE_NAME: es opcional. Es la tabla para la que deseas verificar el upsert_stream_apply_watermark.
  7. Usa la consulta del paso 3 para verificar que la marca de agua de la copia de la región nueva sea posterior a la upsert_stream_apply_watermark capturada en el paso 6.

  8. Si lo deseas, puedes comparar manualmente varias tablas del conjunto de datos principal en la región original con la réplica en la nueva región para verificar que todos los datos se copió correctamente.

  9. Ejecuta el siguiente comando en BigQuery Studio para promover la réplica del conjunto de datos de BigQuery:

    ALTER SCHEMA DATASET_NAME
    SET OPTIONS(primary_replica = 'NEW_REGION');
    

    Reemplaza lo siguiente:

    • DATASET_NAME: es el nombre de tu conjunto de datos.
    • NEW_REGION: Es la región en la que creaste el conjunto de datos.
  10. De manera opcional, si ya no necesitas el conjunto de datos original (ahora la réplica) y no quieres incurrir en cargos adicionales, ve a BigQuery Studio y el conjunto de datos original de BigQuery:

    ALTER SCHEMA DATASET_NAME DROP REPLICA IF EXISTS ORIGINAL_REGION;
    

    Reemplaza lo siguiente:

    • DATASET_NAME: Es el nombre del conjunto de datos original.
    • ORIGINAL_REGION: Es la región del conjunto de datos original.
  11. Crea una transmisión nueva con exactamente la misma configuración, pero con el nuevo BigQuery la ubicación de destino.

  12. Inicia la nueva transmisión.

    Para evitar que se repliquen los eventos duplicados, comienza la transmisión desde una posición específica:

    • En el caso de las fuentes de MySQL y Oracle, puedes identificar la posición del registro examinando los registros de la transmisión original y encontrando la última posición desde la que se leyó correctamente. Para obtener información sobre cómo iniciar la transmisión desde una posición específica, consulta Cómo administrar transmisiones.
    • Para las fuentes de PostgreSQL: la nueva transmisión comienza a leer los cambios de la primera número de secuencia de registro (LSN) en la ranura de replicación. Dado que es posible que el flujo original ya haya procesado algunos de estos cambios, cambia manualmente el puntero de la ranura de replicación al último LSN del que leyó Datastream. Puedes encontrar este LSN en los registros del consumidor de Datastream.
  13. De manera opcional, borra la transmisión original.