4.2. データベースの更新および 更新 イベントの表示
Debezium MySQL コネクターが inventory データベースで 作成 イベントをキャプチャーする方法を確認しました。次に、レコードの 1 つを変更し、コネクターがこれをどのようにキャプチャーするかを見てみましょう。
この手順を完了すると、データベースのコミットで変更した内容の詳細を確認する方法と、変更イベントを比較して、他の変更と関連していつ変更が発生したかを判断する方法を知ることができます。
手順
MySQL コマンドラインクライアントを実行しているターミナルで、以下のステートメントを実行します。
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE customers SET first_name='Anne Marie' WHERE id=1004; Query OK, 1 row affected (0.05 sec) Rows matched: 1 Changed: 1 Warnings: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新された
customersテーブルを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kafka-console-consumerを実行しているターミナルに切り替え、新しい 5 番目のイベントを確認します。customersテーブルのレコードを変更したため、Debezium MySQL コネクターが新しいイベントを生成しました。新しい JSON ドキュメントが 2 つあるはずです。1 つはイベントの キー のドキュメントで、もう 1 つは新しいイベントの 値 のドキュメントです。更新 イベントの キー の詳細は以下のとおりです (書式を調整して読みやすくしてあります)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この キー は、以前のイベントの キー と同じです。
新しいイベントの 値 は次のとおりです。
schemaセクションには変更がないため、payloadセクションのみを表しています (書式を調整して読みやすくしてあります)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表4.1 更新 イベント値のペイロード内におけるフィールドの説明 項目 説明 1
beforeフィールドには、データベースがコミットされる前の行に存在する値が表示されます。元のfirst_nameの値はAnneです。2
afterフィールドには、変更イベント後の行の状態が表示されます。first_nameの値はAnne Marieになりました。3
sourceフィールド構造体には以前と同じ値が多数ありますが、ts_secおよびposフィールドは更新されています (他の状況ではfileが変更されることがあります)。4
opフィールドの値はuになっており、更新によってこの行が変更されたことを示しています。5
ts_ms、ts_us、ts_nsフィールドには、Debezium がこのイベントを処理した時刻を示すタイムスタンプが表示されます。payloadセクションを見ると、更新 イベントに関する重要な情報を確認できます。-
beforeとafter構造を比較することで、コミットが原因で影響を受けた行で実際に何が変更されたかを判断できます。 -
source構造を確認して、MySQL の変更の記録に関する情報を確認できます (トレーサビリティーを提供)。 -
イベントの
payloadセクションと、同じトピック (または別のトピック) の他のイベントを比較することで、別のイベントと同じ MySQL コミットの前、後、または一部としてイベントが発生したかどうかを判断できます。
-