Niveles de aislamiento en la replicación

En esta página, se describe cómo habilitar el aislamiento de transacción en Microsoft SQL. Instantáneas de bases de datos de MySQL y servidores en Cloud Data Fusion trabajos de replicación.

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

Después de la instantánea inicial, se capturan los cambios incrementales en el origen se aplican al destino de BigQuery como parte de la replicación el proceso de administración de recursos.

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 snapshotting, Debezium adquiere bloqueos según la snapshot.isolation.mode configurada.

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

Modo de aislamiento Cerraduras adquiridas Coherencia de los datos
read_uncommitted Ninguno No.
read_committed Bloqueos compartidos en un lote de filas a la vez Parcial. Un registro agregado puede aparecer dos veces: una vez en la y una vez en la fase de transmisión.
repeatable_read
(predeterminada)
Bloqueos compartidos en todas las filas Parcial. Un registro agregado puede aparecer dos veces: una vez en la y una vez en la fase de transmisión.
snapshot Ninguno Completa.
exclusive Bloqueo exclusivo en todas las tablas Completa.

Para obtener más información sobre los modos de aislamiento, consulta Cómo configurar el nivel de aislamiento de transacciones.

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

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 de datos completa 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ánea en un trabajo de replicación

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

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

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

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

MySQL

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

De forma predeterminada, el modo de bloqueo de la instantánea es minimal. En este modo, el conector mantiene 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 mediante REPEATABLE READ. que no bloquea las tablas.

Para evitar bloqueos, establece el modo en none.

Como alternativa, para evitar bloqueos en las bases de datos de MySQL que se ejecutan en Cloud SQL, replicar desde el Réplica en lugar de la base de datos transaccional.

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

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

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 de Debezium.

Fuentes de Oracle en Cloud Data Fusion

La replicación de fuentes de Oracle en Cloud Data Fusion se realiza con Datastream. Datastream no bloquea tablas.

¿Qué sigue?