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