Isolationsebenen bei der Replikation

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, 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 Gemeinsame 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)
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 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. Es verhindert, dass andere Transaktionen die vorhandenen Zeilen ändern. das Einfügen neuer Datensätze zulassen (siehe Eskalierung von Sperren).

Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits für der Quelldatenbank, da sie vollständige Datenkonsistenz bietet, ohne den Tabellen. 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, der sperrt die Tabellen während der Snapshot-Phase nicht.

Snapshot-Isolation in einem Replikationsjob aktivieren

  1. Snapshot-Isolation in der SQL Server-Datenbank aktivieren:

    ALTER DATABASE DATABASE_NAME
    SET ALLOW_SNAPSHOT_ISOLATION ON
    

    Ersetzen Sie DATABASE_NAME durch den Namen der SQL Server-Datenbank.

  2. Legen Sie das Laufzeitargument snapshot.isolation.mode auf snapshot 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-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. 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

  • 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 von Oracle-Quellen in Cloud Data Fusion wird von Datastream unterstützt. Datastream sperrt Tabellen nicht.

Nächste Schritte