Cette page explique comment activer l'isolation des transactions dans les instantanés de base de données Microsoft SQL Server et MySQL dans les tâches de réplication Cloud Data Fusion.
Lorsque vous configurez une tâche de réplication pour une base de données, elle prend un instantané initial des tables sources. Pour assurer 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 et appliquées à la cible BigQuery dans le cadre du processus de réplication en cours.
SQL Server
Pour capturer les modifications apportées aux tables sources d'une base de données SQL Server, la tâche de réplication utilise un connecteur Debezium. Au cours de la phase snapshotting
, Debezium acquiert des verrous en fonction de l'snapshot.isolation.mode
configuré.
Le tableau suivant compare les modes d'isolation compatibles pour les tâches 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 l'instantané initial et une fois dans la phase de streaming. |
repeatable_read (par défaut) |
Verrous partagés sur toutes les lignes | Partiel. Un enregistrement ajouté peut apparaître deux fois: une fois dans l'instantané initial et une fois dans la phase de streaming. |
snapshot |
Aucun | Complet. |
exclusive |
Verrouillage exclusif de toutes les tables | Complet. |
Pour en savoir plus sur les modes d'isolation, consultez la section Définir le niveau d'isolation des transactions.
Par défaut, le mode d'isolation des instantanés est repeatable_read
. Ce mode applique des verrous partagés à toutes les données lues pendant la phase de création d'instantané. Il empêche les autres transactions de modifier les lignes existantes et peut éventuellement autoriser l'insertion de nouveaux enregistrements (voir la section Éscalade 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 offre une cohérence complète des données sans verrouiller les tables. Si elle n'est pas activée, découvrez l'impact des niveaux d'isolation basés sur le numéro de version 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 d'instantané.
Activer l'isolation d'instantané dans un job de réplication
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 la base de données SQL Server.Définissez l'argument d'exécution
snapshot.isolation.mode
sursnapshot
. Pour en savoir plus, consultez la section Transmettre un argument d'exécution à une tâche de réplication.
MySQL
Pour capturer les modifications apportées aux tables sources dans une base de données MySQL, la tâche de réplication utilise un connecteur Debezium. Au cours de la phase snapshotting
, Debezium acquiert des verrous en fonction de l'snapshot.locking.mode
configuré.
Par défaut, le mode de verrouillage des instantanés est minimal
. Dans ce mode, le connecteur maintient le verrouillage de lecture global pour la partie initiale de l'instantané lorsqu'il lit les schémas de base de données et d'autres métadonnées. Le connecteur extrait ensuite toutes les lignes via une lecture cohérente, à l'aide de la transaction REPEATABLE READ
, qui ne verrouille pas les tables.
Pour éviter tout verrouillage, définissez le mode sur none
.
Pour éviter les verrouillages sur les bases de données MySQL exécutées sur Cloud SQL, vous pouvez également effectuer la réplication à partir de l'instance dupliquée plutôt que de la base de données transactionnelle.
Modifier le comportement de verrouillage lors de l'instantané pour MySQL
- Pour modifier le comportement de verrouillage des instantanés dans la base de données MySQL, définissez l'argument d'exécution, la propriété
snapshot.locking.mode
, sur une valeur de mode de verrouillage appropriée.
Pour en savoir plus, consultez Transmettre un argument Debezium à une tâche de réplication.
Limites
- La réplication dans Cloud Data Fusion est compatible avec la version 1.3 du connecteur Debezium.
Sources Oracle dans Cloud Data Fusion
La réplication à partir de sources Oracle dans Cloud Data Fusion est assurée par Datastream. Datastream ne verrouille pas les tables.
Étape suivante
- En savoir plus sur la réplication