Niveles de aislamiento en la replicación

En esta página, se describe cómo habilitar el aislamiento de transacciones en las instantáneas de la base de datos de Microsoft SQL Server y MySQL en los trabajos de replicación de Cloud Data Fusion.

Cuando configuras un trabajo de replicación para una base de datos, el trabajo toma una instantánea inicial de las tablas de origen. Para garantizar la coherencia de los datos, coloca esas tablas.

Después de la instantánea inicial, se capturan los cambios incrementales en la fuente y se aplican al destino de BigQuery como parte del proceso de replicación en curso.

SQL Server

Para capturar los cambios en las tablas de origen en una base de datos de SQL Server, el trabajo de replicación usa un conector Debezium. Durante la fase snapshotting, Debezium adquiere los bloqueos de acuerdo con la snapshot.isolation.mode configurada.

En la siguiente tabla, se comparan los modos de aislamiento admitidos para los trabajos de replicación.

Modo de aislamiento Bloqueos adquiridos Coherencia de los datos
read_uncommitted Ninguna No.
read_committed Bloqueos compartidos en un lote de filas a la vez Parcial. Un registro agregado puede aparecer dos veces: una en la instantánea inicial y otra en la fase de transmisión.
repeatable_read
(predeterminado)
Bloqueos compartidos en todas las filas Parcial. Un registro agregado puede aparecer dos veces: una en la instantánea inicial y otra en la fase de transmisión.
snapshot Ninguna Completa.
exclusive Bloqueo exclusivo en todas las mesas Completa.

Para obtener más información sobre los modos de aislamiento, consulta Configura el nivel de aislamiento de transacción.

De forma predeterminada, el modo de aislamiento de instantáneas es repeatable_read. Este modo toma bloqueos compartidos en todos los datos que se leen durante la fase de creación de instantáneas. Evita que otras transacciones modifiquen las filas existentes y puede permitir la inserción de registros nuevos (consulta la elevación de bloqueo).

Se recomienda la replicación con aislamiento de instantáneas si ya está habilitada en la base de datos de origen, ya que proporciona coherencia completa de datos sin bloquear las tablas. Si no está habilitado, obtén más información sobre el impacto de los niveles de aislamiento basados en el control de versiones de filas en el motor de base de datos de SQL Server antes de habilitarlo.

Como alternativa, usa el modo de aislamiento read_committed, que no bloquea las tablas durante la fase de creación de instantáneas.

Habilita el aislamiento de instantáneas en un trabajo de replicación

  1. Habilita el aislamiento de instantáneas en la base de datos de SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Reemplaza DATABASE_NAME por el nombre de la base de datos de SQL Server.

  2. Establece el argumento del tiempo de ejecución snapshot.isolation.mode en snapshot. Para obtener más información, consulta Pasa un argumento de entorno de ejecución a un trabajo de replicación.

MySQL

Para capturar los cambios en las tablas de origen en una base de datos MySQL, el trabajo de replicación usa un conector Debezium. Durante la fase snapshotting, Debezium adquiere los bloqueos de acuerdo con la snapshot.locking.mode configurada.

De forma predeterminada, el modo de bloqueo de instantáneas es minimal. En este modo, el conector retiene el bloqueo de lectura global para la parte inicial de la instantánea mientras lee los esquemas de la base de datos y otros metadatos. Luego, el conector recupera todas las filas a través de una lectura coherente, con la transacción REPEATABLE READ, que no bloquea las tablas.

Para evitar bloqueos, configura el modo en 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 la base de datos transaccional.

Cambia el comportamiento de bloqueo durante la instantánea para MySQL

  • Para cambiar el comportamiento de bloqueo de la instantánea en la base de datos MySQL, configura el argumento del entorno de ejecución, la propiedad snapshot.locking.mode, en un valor de modo de bloqueo adecuado.

Para obtener más información, consulta Pasa un argumento de Debezium a un trabajo 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 desde fuentes de Oracle en Cloud Data Fusion usa la tecnología de Datastream. Datastream no bloquea las tablas.

¿Qué sigue?