Auf dieser Seite wird beschrieben, wie Sie die Transaktionsisolation in Microsoft SQL Server- und MySQL-Datenbank-Snapshots in Cloud Data Fusion-Replikationsjobs aktivieren.
Wenn Sie einen Replikationsjob für eine Datenbank einrichten, wird beim Job ein erster Snapshot der Quelltabellen erstellt. Um die Datenkonsistenz zu gewährleisten, legen Sie Sperren für diese Tabellen fest.
Nach dem ersten Snapshot werden inkrementelle Änderungen an der Quelle erfasst und im Rahmen des laufenden Replikationsprozesses auf das BigQuery-Ziel angewendet.
SQL Server
Um Änderungen an den Quelltabellen in einer SQL Server-Datenbank zu erfassen, verwendet der Replikationsjob einen Debezium-Connector. Während der Phase snapshotting
erlangt Debezium Sperren gemäß der konfigurierten snapshot.isolation.mode
.
In der folgenden Tabelle werden die unterstützten Isolationsmodi für Replikationsjobs verglichen.
Isolierungsmodus | Gekaufte Schlösser | Datenkonsistenz |
---|---|---|
read_uncommitted |
Keine | Nein. |
read_committed |
Freigegebene Sperren für mehrere Zeilen gleichzeitig | Teilweise. Ein hinzugefügter Datensatz kann zweimal erscheinen: einmal im ersten Snapshot und einmal in der Streamingphase. |
repeatable_read (Standard) |
Freigegebene Sperren für alle Zeilen | Teilweise. Ein hinzugefügter Datensatz kann zweimal erscheinen: einmal im ersten Snapshot und einmal in der Streamingphase. |
snapshot |
Keine | Vollständig. |
exclusive |
Exklusive Sperre für alle Tabellen | Vollständig. |
Weitere Informationen zu Isolationsmodi finden Sie unter Transaktionsisolationsebene festlegen.
Der Standard-Snapshot-Isolationsmodus ist repeatable_read
. In diesem Modus werden freigegebene Sperren für alle Daten erstellt, die während der Snapshot-Phase gelesen werden. Sie verhindert, dass andere Transaktionen die vorhandenen Zeilen ändern, und kann das Einfügen neuer Datensätze ermöglichen (siehe Sperreskaskade).
Die Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits in der Quelldatenbank aktiviert ist, da sie für vollständige Datenkonsistenz ohne Sperren der Tabellen sorgt. Wenn die Funktion nicht aktiviert ist, informieren Sie sich über die Auswirkungen der Isolationsebenen auf Grundlage der Zeilenversionierung in der SQL Server-Datenbankmodul, bevor Sie sie aktivieren.
Alternativ können Sie den Isolationsmodus read_committed
verwenden, bei dem die Tabellen während der Snapshot-Phase nicht gesperrt werden.
Snapshot-Isolation in einem Replikationsjob aktivieren
Aktivieren Sie die Snapshot-Isolation in der SQL Server-Datenbank:
ALTER DATABASE DATABASE_NAME SET ALLOW_SNAPSHOT_ISOLATION ON
Ersetzen Sie
DATABASE_NAME
durch den Namen der SQL Server-Datenbank.Legen Sie das Laufzeitargument
snapshot.isolation.mode
aufsnapshot
fest. Weitere Informationen finden Sie unter Laufzeitargument an einen Replikationsjob übergeben.
MySQL
Um Änderungen an den Quelltabellen in einer MySQL-Datenbank zu erfassen, verwendet der Replikationsjob einen Debezium-Connector. Während der Phase snapshotting
erlangt Debezium Sperren gemäß der konfigurierten snapshot.locking.mode
.
Standardmäßig ist der Snapshot-Sperrungsmodus minimal
. In diesem Modus hält der Connector die globale Lesesperre für den ersten Teil des Snapshots, während er die Datenbankschemata und andere Metadaten liest. Anschließend ruft der Connector alle Zeilen über eine konsistente Lesevorgang mit der REPEATABLE READ
-Transaktion ab, die die Tabellen nicht sperrt.
Legen Sie den Modus auf none
fest, um Sperrungen zu vermeiden.
Alternativ können Sie, um Sperren bei MySQL-Datenbanken zu vermeiden, die in Cloud SQL ausgeführt werden, von dem Replikat statt von der Transaktionsdatenbank replizieren.
Sperrverhalten während des Snapshots für MySQL ändern
- Wenn Sie das Verhalten der Snapshot-Sperrung in der MySQL-Datenbank ändern möchten, legen Sie für das Laufzeitargument
snapshot.locking.mode
einen geeigneten Wert für den Sperrungsmodus fest.
Weitere Informationen finden Sie unter Debezium-Argument an einen Replikationsjob übergeben.
Beschränkungen
- Die Replikation in Cloud Data Fusion unterstützt Debezium Connector Version 1.3.
Oracle-Quellen in Cloud Data Fusion
Die Replikation von Oracle-Quellen in Cloud Data Fusion wird von Datastream unterstützt. Datastream sperrt keine Tabellen.