Migra 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 en BigQuery, pero configuraste el 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 a BigQuery.

Antes de comenzar

Antes de comenzar a migrar tus datos a otra región, considera 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 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 de mayor duración:
    • Para obtener información sobre cuánto tiempo podrían tardar en finalizar las operaciones de combinación, consulta Valor recomendado max_staleness de la tabla.
    • Para encontrar el máximo de max_staleness en el conjunto de datos, consulta Determina el valor actual de max_staleness de una tabla y ajusta la consulta según tus necesidades específicas.
    • Si la pausa estimada es demasiado larga para que la base de datos de origen la admita, te recomendamos que consideres reducir de forma temporal el valor de max_staleness de 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 consulta y reserva en segundo plano). Para obtener más información sobre las reservas, consulta Asignaciones de reservas.
  • Verifica que el usuario que realiza la migración tenga permisos suficientes para realizar esta operación, como los controles de administración de identidades y accesos (IAM) o los Controles del servicio de VPC.

Pasos para la migración

Para iniciar la migración del conjunto de datos, usa 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 el conjunto de datos. Por ejemplo, region-us
  3. Supervisa el progreso de la migración y espera hasta que la marca de agua de la copia en la réplica esté a unos minutos de la instancia principal. Puedes ejecutar esta consulta en BigQuery INFORMATION_ nueva 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 de Datastream existente. Para obtener más información, consulta Pausa la transmisión.

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

  6. Para confirmar que se hayan aplicado los últimos cambios de CDC a la tabla de BigQuery, verifica el upsert_stream_apply_watermark de la tabla. Ejecuta la siguiente consulta y asegúrate de que la marca de tiempo de la marca de tiempo sea 10 minutos después, luego, cuando se pausó la transmisión:

    SELECT table_name, upsert_stream_apply_watermark
    FROM DATASET_NAME.INFORMATION_SCHEMA.TABLES
    

    Para ejecutar la consulta solo en 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. La tabla en la que deseas comprobar el upsert_stream_apply_watermark.
  7. Usa la consulta del paso 3 para verificar que la marca de agua de copia de la región nueva sea posterior a la upsert_stream_apply_watermark capturada en el paso 6.

  8. De manera opcional, puedes comparar de forma manual varias tablas en el conjunto de datos principal en la región original con la réplica en la región nueva para verificar que todos los datos se copien de forma correcta.

  9. Para promover la réplica del conjunto de datos de BigQuery, ejecuta el siguiente comando en BigQuery Studio:

    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 deseas generar cargos adicionales, ve a BigQuery Studio y descarta 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 la misma configuración, pero con una ubicación de destino de BigQuery nueva.

  12. Inicia la nueva transmisión.

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

    • Para las fuentes de MySQL y Oracle, puedes identificar la posición del registro si examinas los registros de la transmisión original y buscas la última posición desde la que la transmisión leyó de forma correcta. Si deseas obtener información para iniciar una transmisión desde una posición específica, consulta Administra transmisiones.
    • Para las fuentes de PostgreSQL: la transmisión nueva comienza a leer los cambios del primer número de secuencia de registro (LSN) en la ranura de replicación. Debido a que es posible que la transmisión original ya haya procesado algunos de estos cambios, cambia de forma manual 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.