Isolationsebenen bei der Replikation

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, erstellt der Job einen ersten Snapshot der Quelltabellen. Um die Datenkonsistenz zu gewährleisten, werden Sperren für diese Tabellen gesetzt.

Nach dem ersten Snapshot werden inkrementelle Änderungen an der Quelle erfasst und im Rahmen des laufenden Replikationsprozesses auf das BigQuery-Ziel angewendet.

SQL Server

Zum Erfassen von Änderungen in den Quelltabellen einer SQL Server-Datenbank verwendet der Replikationsjob einen Debezium-Connector. Während der snapshotting Phase ruft Debezium Sperren gemäß dem konfigurierten snapshot.isolation.mode ab.

In der folgenden Tabelle werden die unterstützten Isolationsmodi für Replikationsjobs verglichen.

Isolationsmodus Abgerufene Sperren Datenkonsistenz
read_uncommitted Keine Nein.
read_committed Gemeinsame Sperren für einen Batch von Zeilen Teilweise. Ein hinzugefügter Datensatz kann zweimal vorkommen: einmal im ersten Snapshot und einmal in der Streamingphase.
repeatable_read
(Standardeinstellung)
Gemeinsame Sperren für alle Zeilen Teilweise. Ein hinzugefügter Datensatz kann zweimal vorkommen: 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 Transaktionsisolationsstufe festlegen.

Standardmäßig ist der Snapshot-Isolationsmodus repeatable_read. In diesem Modus werden gemeinsame Sperren für alle Daten gesetzt, die während der Snapshot-Phase gelesen werden. Dadurch wird verhindert, dass andere Transaktionen die vorhandenen Zeilen ändern. Möglicherweise können neue Datensätze eingefügt werden (siehe Sperren-Eskalation).

Die Replikation mit Snapshot-Isolation wird empfohlen, wenn sie bereits in der Quelldatenbank aktiviert ist, da sie eine vollständige Datenkonsistenz ohne Sperren der Tabellen bietet. Wenn sie nicht aktiviert ist, informieren Sie sich über die Auswirkungen von auf Zeilenversionierung basierenden Isolationsstufen in der SQL Server-Datenbank-Engine vor der Aktivierung.

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

  1. 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.

  2. Setzen Sie das Laufzeitargument snapshot.isolation.mode auf snapshot. Weitere Informationen finden Sie unter Laufzeitargument an einen Replikationsjob übergeben.

MySQL

Zum Erfassen von Änderungen in den Quelltabellen einer MySQL-Datenbank verwendet der Replikationsjob einen Debezium-Connector. Während der snapshotting Phase ruft Debezium Sperren gemäß dem konfigurierten snapshot.locking.mode ab.

Standardmäßig ist der Snapshot-Sperrmodus minimal. In diesem Modus hält der Connector die globale Lesesperre für den ersten Teil des Snapshots, während er die Datenbankschemas und andere Metadaten liest. Anschließend ruft der Connector alle Zeilen über einen konsistenten Lesevorgang mit der Transaktion REPEATABLE READ ab, bei der die Tabellen nicht gesperrt werden.

Wenn Sie Sperren vermeiden möchten, setzen Sie den Modus auf none.

Alternativ können Sie Sperren für MySQL-Datenbanken, die in Cloud SQL ausgeführt werden, vermeiden, indem Sie die Replikation von der Replikat- anstelle der Transaktionsdatenbank ausführen.

Sperrverhalten während des Snapshots für MySQL ändern

  • Wenn Sie das Snapshot-Sperrverhalten in der MySQL-Datenbank ändern möchten, setzen Sie das Laufzeit argument, snapshot.locking.mode auf einen geeigneten Sperrmoduswert.

Weitere Informationen finden Sie unter Debezium-Argument an einen Replikationsjob übergeben.

Beschränkungen

  • Die Replikation in Cloud Data Fusion unterstützt die Debezium-Connector-Version 1.3.

Oracle-Quellen in Cloud Data Fusion

Die Replikation aus Oracle-Quellen in Cloud Data Fusion wird von Datastream unterstützt. Datastream sperrt keine Tabellen.

Nächste Schritte