Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 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 de mayor duración:
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 recursos de BigQuery suficientes
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.
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 tu conjunto de datos. Por ejemplo, region-us
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
INFORMATION_SCHEMA de BigQuery
para verificar el progreso de la migración:
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.
Pausa el flujo de Datastream existente. Para obtener más información, consulta Cómo pausar la transmisión.
Espera a que se agote la transmisión y toma nota de la hora en la que la transmisión ingresó al estado PAUSED.
Para confirmar que los cambios más recientes de la CDC se aplicaron 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 agua sea 10 minutos después de la hora en que se detuvo la transmisión:
Para ejecutar la consulta solo para una tabla específica, agrega la siguiente cláusula WHERE:
WHEREtable_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.
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.
De manera opcional, compara manualmente varias tablas del 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 hayan copiado correctamente.
Ejecuta el siguiente
command en BigQuery Studio para promocionar la réplica del conjunto de datos de BigQuery:
DATASET_NAME: es el nombre de tu conjunto de datos.
NEW_REGION: Es la región en la que creaste el conjunto de datos.
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 suelta
el conjunto de datos de BigQuery original:
DATASET_NAME: El nombre del conjunto de datos original.
ORIGINAL_REGION: La región del conjunto de datos original.
Crea un flujo nuevo con la misma configuración, pero con una nueva ubicación de destino de BigQuery.
Inicia la nueva transmisión.
Para evitar replicar eventos duplicados, inicia 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, el flujo nuevo comienza a leer los cambios desde el primer 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.
De manera opcional, borra la transmisión original.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[[["\u003cp\u003eThis guide details how to migrate a BigQuery dataset to a new region without a full data re-synchronization when using Datastream replication.\u003c/p\u003e\n"],["\u003cp\u003eThe migration process involves creating a dataset replica in the new region, temporarily pausing the Datastream stream, and monitoring the data transfer progress.\u003c/p\u003e\n"],["\u003cp\u003eBefore initiating the migration, you must estimate the required stream pause duration based on the dataset's \u003ccode\u003emax_staleness\u003c/code\u003e and the merge operation time, while ensuring the source database retains change logs.\u003c/p\u003e\n"],["\u003cp\u003eOnce the replica's data is consistent and the stream is paused, the replica is promoted to the primary dataset and a new stream is created with the correct BigQuery destination.\u003c/p\u003e\n"],["\u003cp\u003eUsers should also ensure sufficient BigQuery resources and permissions are available in the destination region before commencing the dataset migration.\u003c/p\u003e\n"]]],[],null,["# Migrate a CDC table to another region\n\nThis page describes best practices for a use case where you've set up\nDatastream replication to BigQuery but configured the\ndestination dataset in an incorrect region. You then want to move the dataset to\nanother region (or multi-region) without having to re-synchronise all of the data\nfrom the source database to BigQuery.\n\n\u003cbr /\u003e\n\n| Querying the secondary region during the migration procedure might return incorrect or incomplete results. For more information about the limitations related to the migration procedure described on this page, see [Cross-region dataset replication](/bigquery/docs/data-replication#limitations).\n\n\u003cbr /\u003e\n\nBefore you begin\n----------------\n\nBefore you start migrating your data to another region, consider the\nfollowing:\n\n- Migration takes time, and you must temporarily pause the stream during the operation. To maintain data integrity, the source database must retain the change logs when the stream is paused. To estimate how long to pause the stream, combine the value of `max_staleness` in the dataset and the longest-running merge operation:\n - For information about how long it might take for merge operations to finish, see [Recommended table `max_staleness` value](/bigquery/docs/change-data-capture#recommended-max-staleness).\n - To find the maximum `max_staleness` in the dataset, see [Determine the current `max_staleness` value of a table](/bigquery/docs/change-data-capture#determine-max-staleness) and adjust the query to your specific needs.\n - If the estimated pause is too long for your source database to support, you might want to consider temporarily reducing the value of `max_staleness` for the tables in the dataset.\n- Verify that the user performing the migration has sufficient BigQuery resources in the destination region (query reservation and background reservation). For more information about reservations, see [Reservation assignments](/bigquery/docs/reservations-intro#assignments).\n- Verify that the user performing the migration has sufficient permissions to perform this operation, such as [Identity and Access Management (IAM)](/iam) controls or [VPC Service Controls](/security/vpc-service-controls).\n\nMigration steps\n---------------\n\nTo initiate [dataset migration](/bigquery/docs/data-replication#migrate_datasets),\nuse BigQuery data replication:\n\n1. In the Google Cloud console, go to the **BigQuery Studio** page.\n\n [Go to BigQuery Studio](https://console.cloud.google.com/bigquery)\n2. Create a BigQuery dataset replica in the new region:\n\n ALTER SCHEMA \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATASET_NAME\u003c/span\u003e\u003c/var\u003e\n ADD REPLICA '\u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e'\n OPTIONS(location='\u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e');\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eDATASET_NAME\u003c/var\u003e: the name of the dataset that you want to create.\n - \u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e: the name of the region where you want to create your dataset. For example, `region-us`.\n3. Monitor the migration progress, and wait until the copy watermark in the\n replica is within a few minutes of the primary. You can run this query on\n the [BigQuery INFORMATION_SCHEMA](/bigquery/docs/information-schema-schemata-replicas#schema)\n to check the migration progress:\n\n SELECT\n catalog_name as project_id,\n schema_name as dataset_name,\n replication_time as dataset_replica_staleness\n FROM\n '\u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e'.INFORMATION_SCHEMA.SCHEMATA_REPLICAS\n WHERE\n catalog_name = \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003ePROJECT_ID\u003c/span\u003e\u003c/var\u003e\n AND schema_name = \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATASET_NAME\u003c/span\u003e\u003c/var\u003e\n AND location = \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eNEW_REGION\u003c/span\u003e\u003c/var\u003e;\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e: the ID of your Google Cloud project.\n - \u003cvar translate=\"no\"\u003eDATASET_NAME\u003c/var\u003e: the name of your dataset.\n - \u003cvar translate=\"no\"\u003eDATASET_REPLICA_STALENESS\u003c/var\u003e: the staleness configuration of the tables in the dataset replica that you created.\n - \u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e: the region where you created your dataset.\n4. Pause the existing Datastream stream. For more information, see\n [Pause the stream](/datastream/docs/run-a-stream#pauseastream).\n\n5. Wait for the stream to drain and take note of the time when the stream entered the\n `PAUSED` state.\n\n6. Confirm that the latest CDC changes have been applied to the BigQuery\n table by checking the [`upsert_stream_apply_watermark`](/bigquery/docs/change-data-capture#monitor_table_upsert_operation_progress)\n for the table. Run the following query and ensure that the watermark timestamp\n is 10 minutes later then when the stream was paused:\n\n SELECT table_name, upsert_stream_apply_watermark\n FROM \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATASET_NAME\u003c/span\u003e\u003c/var\u003e.INFORMATION_SCHEMA.TABLES\n\n To run the query only for a specific table, add the following `WHERE` clause: \n\n WHERE table_name = '\u003cvar translate=\"no\"\u003eTABLE_NAME\u003c/var\u003e'\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eDATASET_NAME\u003c/var\u003e: the name of your dataset.\n - \u003cvar translate=\"no\"\u003eTABLE_NAME\u003c/var\u003e: optional. The table for which you want to check the `upsert_stream_apply_watermark`.\n7. Use the query from step 3 to verify that the new region copy watermark is\n later than the `upsert_stream_apply_watermark` captured in step 6.\n\n8. Optionally, manually compare several tables in the primary dataset in the\n original region with the replica in the new region to verify that all data\n is correctly copied.\n\n9. Promote the BigQuery dataset replica by running the following\n command in BigQuery Studio:\n\n ALTER SCHEMA \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATASET_NAME\u003c/span\u003e\u003c/var\u003e\n SET OPTIONS(primary_replica = '\u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e');\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eDATASET_NAME\u003c/var\u003e: the name of your dataset.\n - \u003cvar translate=\"no\"\u003eNEW_REGION\u003c/var\u003e: the region where you created your dataset.\n10. Optionally, if you no longer need the original dataset (now the replica), and\n don't want to incur extra charges, then go to BigQuery Studio and drop\n the original BigQuery dataset:\n\n ALTER SCHEMA \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATASET_NAME\u003c/span\u003e\u003c/var\u003e DROP REPLICA IF EXISTS \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eORIGINAL_REGION\u003c/span\u003e\u003c/var\u003e;\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eDATASET_NAME\u003c/var\u003e: the name of the original dataset.\n - \u003cvar translate=\"no\"\u003eORIGINAL_REGION\u003c/var\u003e: the region of the original dataset.\n11. Create a new stream with the exact same configuration but with new BigQuery\n destination location.\n\n12. Start the new stream.\n\n To prevent replicating duplicate events, start\n the stream from a specific position:\n - For MySQL and Oracle sources: you can identify the log position by examining the logs of the original stream and finding the last position from which the stream read successfully. For information about starting the stream from a specific position, see [Manage streams](/datastream/docs/manage-streams#startastreamfromspecific).\n - For PostgreSQL sources: the new stream starts reading changes from the first log sequence number (LSN) in the replication slot. Because the original stream might have already processed some of these changes, manually change the pointer of the replication slot to the last LSN from which Datastream read. You can find this LSN in the Datastream consumer logs.\n13. Optionally, delete the original stream."]]