第5章 SQL Server の Debezium コネクター

Debezium の SQL Server Connector は、SQL Server データベースのスキーマの行レベルの変更を監視および記録できます。

SQL Server データベース/クラスターに初めて接続すると、すべてのスキーマの一貫したスナップショットを読み取ります。スナップショットが完了すると、コネクターは SQL Server にコミットされた変更を継続的にストリーミングし、対応する挿入、更新、および削除イベントを生成します。各テーブルのイベントはすべて個別の Kafka トピックに記録され、アプリケーションやサービスによって簡単に消費されます。

5.1. 概要

コネクターの機能は、SQL Server Standard(SQL Server 2016 SP1)または Enterprise 版から提供される 変更データキャプチャー 機能をベースとしています。このメカニズムを使用して、SQL Server キャプチャープロセスにより、ユーザーが関心のあるデータベースおよびテーブルをすべて監視し、その変更はストアドプロシージャーファサードを持つ特別に作成されたフレーム テーブル に保管されます。

コネクターがキャプチャー する必要のあるテーブルについて は、データベース Operator が有効 にする必要があります。コネクターは次に、すべての行レベルの挿入、更新、および削除操作の 変更イベント を作成します。その際、コネクターは 個別の Kafka トピックで各テーブルのすべての変更イベントを記録します。クライアントアプリケーションは、以下に関心のあるデータベーステーブルに対応する Kafka トピックを読み取り、これらのトピックで表示されるすべての行レベルのイベントに対応します。

データベース Operator は通常、データベース のアン/テーブルの中間期間中に有効になります。つまり、コネクターにはデータベースに加えられたすべての変更の完全な履歴がないことを意味します。そのため、SQL Server コネクターが最初に特定の SQL Server データベースに接続するとき、各データベーススキーマの 一貫したスナップショット を実行することで開始します。コネクターがスナップショットを完了した後も、スナップショットの作成先の正確な時点から変更のストリーミングが継続されます。これにより、全データの一貫したビューから始め、スナップショットの発生中に加えられた変更をすべて失われることなく、読み取りを継続します。

コネクターは失敗を許容します。コネクターは変更を読み取り、イベントを生成する際に、各イベントに関連するデータベースログ(LSN / ログシーケンス番号 位置を記録します。コネクターが何らかの理由で停止する場合(通信の失敗、ネットワークの問題、クラッシュなど)、再起動すると単に、最後に停止した テーブル を読み取り続けるだけです。これには、スナップショットが含まれます。再起動すると、コネクターが停止した際にスナップショットが完了しなかった場合(再起動時にスナップショットが開始します)。