En esta página se describe cómo habilitar el aislamiento de transacciones en las réplicas de bases de datos de Microsoft SQL Server y MySQL en los trabajos de réplica de Cloud Data Fusion.
Cuando configuras una tarea de replicación para una base de datos, la tarea hace una captura inicial de las tablas de origen. Para asegurar la coherencia de los datos, coloca bloqueos en esas tablas.
Después de la captura inicial, se registran los cambios incrementales en el origen y se aplican al destino de BigQuery como parte del proceso de replicación continuo.
SQL Server
Para capturar los cambios en las tablas de origen de una base de datos de SQL Server, el trabajo de replicación usa un conector de Debezium. Durante la fase de snapshotting
, Debezium adquiere bloqueos según el snapshot.isolation.mode
configurado.
En la siguiente tabla se comparan los modos de aislamiento admitidos para los trabajos de replicación.
Modo de aislamiento | Cerraduras adquiridas | Coherencia de datos |
---|---|---|
read_uncommitted |
Ninguno | No. |
read_committed |
Bloqueos compartidos en un lote de filas a la vez | Parcial. Un registro añadido puede aparecer dos veces: una en la instantánea inicial y otra en la fase de streaming. |
repeatable_read (predeterminado) |
Bloqueos compartidos en todas las filas | Parcial. Un registro añadido puede aparecer dos veces: una en la instantánea inicial y otra en la fase de streaming. |
snapshot |
Ninguno | Completo. |
exclusive |
Bloqueo exclusivo en todas las tablas | Completo. |
Para obtener más información sobre los modos de aislamiento, consulta Definir el nivel de aislamiento de las transacciones.
De forma predeterminada, el modo de aislamiento de la captura es repeatable_read
. Este modo toma bloqueos compartidos en todos los datos que se leen durante la fase de creación de la copia de seguridad. Impide que otras transacciones modifiquen las filas existentes y puede permitir la inserción de nuevos registros (consulta escalada de bloqueos).
Se recomienda la replicación con aislamiento de instantáneas si ya está habilitada en la base de datos de origen, ya que proporciona una coherencia de datos completa sin bloquear las tablas. Si no está habilitado, consulta más información sobre el impacto de los niveles de aislamiento basados en el control de versiones de las filas en el motor de base de datos de SQL Server antes de habilitarlo.
También puedes usar el read_committed
modo de aislamiento, que no bloquea las tablas durante la fase de creación de la instantánea.
Habilitar el aislamiento de la captura en un trabajo de replicación
Habilita el aislamiento de la captura en la base de datos de SQL Server:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Sustituye
DATABASE_NAME
por el nombre de la base de datos de SQL Server.Asigna el valor
snapshot
al argumento de tiempo de ejecuciónsnapshot.isolation.mode
. Para obtener más información, consulta Pasar un argumento de tiempo de ejecución a una tarea de replicación.
MySQL
Para registrar los cambios en las tablas de origen de una base de datos MySQL, el trabajo de replicación usa un conector de Debezium. Durante la fase de snapshotting
, Debezium adquiere bloqueos según el snapshot.locking.mode
configurado.
De forma predeterminada, el modo de bloqueo de instantáneas es minimal
. En este modo, el conector mantiene el bloqueo de lectura global durante la parte inicial de la copia de seguridad mientras lee los esquemas de la base de datos y otros metadatos. A continuación, el conector obtiene todas las filas mediante una lectura coherente, usando la transacción REPEATABLE READ
, que no bloquea las tablas.
Para evitar que se bloquee, selecciona el modo none
.
Como alternativa, para evitar bloqueos en las bases de datos MySQL que se ejecutan en Cloud SQL, replica desde la réplica en lugar de desde la base de datos transaccional.
Cambiar el comportamiento de bloqueo durante la creación de la instantánea de MySQL
- Para cambiar el comportamiento del bloqueo de instantáneas en la base de datos MySQL, asigna al argumento de tiempo de ejecución, la propiedad
snapshot.locking.mode
, un valor de modo de bloqueo adecuado.
Para obtener más información, consulta Pasar un argumento de Debezium a una tarea de replicación.
Limitaciones
- La replicación en Cloud Data Fusion admite la versión 1.3 del conector Debezium.
Fuentes de Oracle en Cloud Data Fusion
La replicación de fuentes de Oracle en Cloud Data Fusion se basa en Datastream. El flujo de datos no bloquea las tablas.
Siguientes pasos
- Consulta más información sobre la replicación.