Niveaux d'isolation dans la réplication

Cette page explique comment activer l'isolation de transaction dans Microsoft SQL Instantanés de base de données serveur et MySQL dans Cloud Data Fusion de réplication.

Lorsque vous configurez un job de réplication pour une base de données, le job un instantané initial des tables sources. Pour garantir la cohérence des données, placez des verrous sur ces tables.

Après l'instantané initial, les modifications incrémentielles à la source sont capturées appliquée à la cible BigQuery dans le cadre de la réplication en cours ; processus.

SQL Server

Pour capturer les modifications apportées aux tables sources dans une base de données SQL Server, de réplication utilise un connecteur Debezium. Pendant le Phase snapshotting, Debezium acquiert des verrous selon snapshot.isolation.mode

Le tableau suivant compare les modes d'isolation pris en charge pour de réplication.

Mode d'isolation Serrures acquises Cohérence des données
read_uncommitted Aucun Non.
read_committed Verrous partagés sur un lot de lignes à la fois Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans le premier l'instantané et une fois dans la phase de traitement par flux.
repeatable_read
(par défaut)
Verrous partagés sur toutes les lignes Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans le premier l'instantané et une fois dans la phase de traitement par flux.
snapshot Aucun Pleine.
exclusive Verrouillage exclusif sur toutes les tables Pleine.

Pour en savoir plus sur les modes d'isolation, consultez Définissez le niveau d'isolation des transactions.

Par défaut, le mode d'isolation d'instantané est repeatable_read. Ce mode prend des verrous partagés sur toutes les données lues pendant la phase de création d'instantanés. Il empêche d'autres transactions de modifier les lignes existantes et peut permettant potentiellement l'insertion de nouveaux enregistrements (voir escalade de verrouillage).

La réplication avec isolation d'instantané est recommandée si elle est déjà activée sur la base de données source, car elle assure une cohérence complète des données sans verrouillage les tableaux. Si elle n'est pas activée, renseignez-vous sur l'impact Niveaux d'isolation basés sur la gestion des versions des lignes dans le moteur de base de données SQL Server avant de l'activer.

Vous pouvez également utiliser le mode d'isolation read_committed, qui ne verrouille pas les tables pendant la phase de création d'instantanés.

Activer l'isolation d'instantané dans un job de réplication

  1. Activez l'isolation d'instantané dans la base de données SQL Server:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Remplacez DATABASE_NAME par le nom de SQL Server. base de données.

  2. Définissez l'argument d'exécution snapshot.isolation.mode sur snapshot. Pour plus pour en savoir plus, consultez Transmettre un argument d'exécution à une tâche de réplication.

MySQL

Pour capturer les modifications apportées aux tables sources d'une base de données MySQL, de réplication utilise un connecteur Debezium. Pendant le Phase snapshotting, Debezium acquiert des verrous selon snapshot.locking.mode

Par défaut, le mode de verrouillage des instantanés est minimal. Dans ce mode, le connecteur conserve le verrouillage global en lecture pour la partie initiale de l'instantané. lorsqu'il lit les schémas de base de données et d'autres métadonnées. Ensuite, le connecteur récupère toutes les lignes par le biais d'une lecture cohérente, à l'aide de REPEATABLE READ qui ne verrouille pas les tables.

Pour éviter tout verrouillage, définissez le mode sur none.

Comme alternative, pour éviter les verrouillages sur les bases de données MySQL exécutées sur Cloud SQL, répliquez-les Instance répliquée au lieu de la base de données transactionnelle.

Modifier le comportement de verrouillage pendant l'instantané pour MySQL

  • Pour modifier le comportement de verrouillage des instantanés dans la base de données MySQL, définissez l'environnement d'exécution (propriété snapshot.locking.mode) à une valeur lock mode (mode verrouillage).

Pour en savoir plus, consultez la section Transmettre un argument Debezium à une tâche de réplication.

Limites

  • La réplication dans Cloud Data Fusion est compatible avec le connecteur Debezium version 1.3.

Sources Oracle dans Cloud Data Fusion

Dans Cloud Data Fusion, la réplication à partir de sources Oracle est assurée par Datastream Datastream ne verrouille pas les tables.

Étape suivante