4.3. SQL Server コネクターの仕組み

4.3.1. スナップショット

SQL Server CDC は、データベース変更の完全な履歴を保存するように設計されていません。そのため、Debezium は現在のデータベースコンテンツのベースラインを確立し、それを Kafka にストリーミングする必要があります。これは、snapshotting と呼ばれるプロセスを使用して実行されます。

デフォルトでは(スナップショットモードの最初の)、コネクターは最初の起動時にデータベースの最初の 整合性スナップショット を実行します(コネクターのフィルター設定に従ってキャプチャーされるテーブルの構造およびデータになります)。

各スナップショットは以下の手順で設定されます。

  1. キャプチャーするテーブルの決定
  2. 監視される各テーブルでロックを取得し、テーブルの構造が変更されないようにします。ロックのレベルは、snapshot.isolation.mode 設定プロパティーによって決定されます。
  3. サーバーのトランザクションログの最大 LSN ("log sequence number")の位置を読み取ります。
  4. 関連するテーブルの構造をすべてキャプチャーします。
  5. 必要に応じて、手順 2 で取得したロックを解放します。つまり、ロックは通常短期間のみ保持されます。
  6. ステップ 3 で読み取られた LSN の位置で有効なものとして、関連するデータベーステーブルとスキーマをすべてスキャンし、各行の READ イベントを生成し、そのイベントを適切なテーブル固有の Kafka トピックに書き込みます。
  7. コネクターオフセットにスナップショットの正常な完了を記録します。