5.3. SQL Server コネクターの仕組み
5.3.1. スナップショット
SQL Server は、データベース変更の完全な履歴を保存するものではありません。そのため、Debezium が現在のデータベースコンテンツのベースラインを確立し、それを Kafka にストリームする必要があります。これは、スナップショットと呼ばれるプロセスで実行されます。
デフォルトでは(スナップショットモードの 初期)コネクターは、最初の起動時にデータベースの初期 一貫したスナップショット を実行します(これは、コネクターのフィルター設定に従ってキャプチャーされるテーブル内の構造およびデータを意味します)。
各スナップショットは、以下の手順で構成されます。
- キャプチャーされるテーブルの特定
-
各監視されるテーブルのロックを取得して、あらゆるテーブルに対して構成の変更が発生しないようにします。ロックのレベルは、
snapshot.isolation.mode
設定オプションにより決定されます。 - サーバーのトランザクションログの最大 LSN(LSN シーケンス番号)の位置を確認します。
- 関連するすべてのテーブルの構造を取得します。
- 必要に応じて、手順 2 で取得したロックを解放します。つまり、ロックは通常短期間のみ保持されます。
-
ステップ 3 で読み取られた LSN 位置で有効であるすべてのデータベーステーブルおよびスキーマをスキャンし、各行の
READ
イベントを生成し、そのイベントを適切なテーブル固有の Kafka トピックに書き込みます。 - コネクターオフセットでスナップショットが正常に完了したことを記録します。