Auf dieser Seite wird beschrieben, wie Sie die Transaktionsisolation in Microsoft SQL aktivieren. Server- und MySQL-Datenbank-Snapshots in Cloud Data Fusion Replikationsjobs.
Wenn Sie einen Replikationsjob für eine Datenbank einrichten, nimmt der Job einen ersten Snapshot der Quelltabellen. 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 wird im Rahmen der laufenden Replikation 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
snapshotting
-Phase,
Debezium erwirbt Sperren gemäß den
snapshot.isolation.mode
In der folgenden Tabelle werden die unterstützten Isolationsmodi für Replikationsjobs.
Isolationsmodus | Schlösser erhalten | Datenkonsistenz |
---|---|---|
read_uncommitted |
Keine | Nein. |
read_committed |
Freigegebene Sperren für mehrere Zeilen gleichzeitig | Teilweise. Ein hinzugefügter Eintrag kann zweimal vorkommen: einmal am Anfang Snapshot und einmal in der Streaming-Phase. |
repeatable_read (Standard) |
Gemeinsame Sperren für alle Zeilen | Teilweise. Ein hinzugefügter Eintrag kann zweimal vorkommen: einmal am Anfang Snapshot und einmal in der Streaming-Phase. |
snapshot |
Keine | Voll ausgelastet. |
exclusive |
Exklusive Sperre für alle Tabellen | Voll ausgelastet. |
Weitere Informationen zu Isolationsmodi finden Sie unter Legen Sie die Transaktionsisolationsebene fest.
Standardmäßig ist der Snapshot-Isolationsmodus repeatable_read
. Dieser Modus nimmt
gemeinsame Sperren für alle Daten,
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).
Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits für die Quelldatenbank, da sie vollständige Datenkonsistenz bietet, ohne den Tabellen. Ist dies nicht der Fall, erfahren Sie hier mehr über die Auswirkungen von Auf der Zeilenversionsverwaltung basierende Isolationsebenen im 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 des SQL Servers. Datenbank.Legen Sie das Laufzeitargument
snapshot.isolation.mode
aufsnapshot
fest. Weitere Informationen finden Sie unter Laufzeitargument an einen Replikationsjob übergeben.
MySQL
Um Änderungen in den Quelltabellen in einer MySQL-Datenbank zu erfassen,
Für den Replikationsjob wird ein Debezium-Connector verwendet. Während der
snapshotting
-Phase,
Debezium erwirbt Sperren gemäß den
snapshot.locking.mode
Standardmäßig ist der Snapshot-Sperrmodus minimal
. In diesem Modus
Connector enthält die globale Lesesperre für den ersten Teil des Snapshots
da es Datenbankschemas und
andere Metadaten liest. Dann ist der Anschlussstecker
ruft alle Zeilen über einen konsistenten Lesevorgang ab und verwendet dabei den REPEATABLE READ
-Transaktion, wodurch die Tabellen nicht gesperrt werden.
Um Sperren zu vermeiden, legen Sie den Modus auf none
fest.
Um Sperren für MySQL-Datenbanken zu verhindern, Cloud SQL aus dem Replikat anstelle der Transaktionsdatenbank.
Sperrverhalten während des Snapshots für MySQL ändern
- Legen Sie die Laufzeit fest, um das Snapshot-Sperrverhalten in der MySQL-Datenbank zu ändern
Argument, der Eigenschaft
snapshot.locking.mode
, in einen geeigneten locking mode als Wert.
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 aus Oracle-Quellen in Cloud Data Fusion basiert auf Datastream. Datastream sperrt Tabellen nicht.