概要
CDC(Change Data Capture) は、データベース内のデータ変更(INSERT、UPDATE、DELETE)を継続的に取得し、他のデータベースやデータウェアハウスに転送・連携することで、データの一貫性や鮮度を保つ技術です。
主な特長
TROCCOのCDCデータ転送機能では、データソース側(例:MySQL)で発生した変更を最短5分間隔で収集し、連携先(例:Amazon S3 Iceberg)への同期処理を実行します。
CDCデータ転送設定を1つ作るだけで、データソース側のすべてのテーブルのレコードの削除・追加・更新を、連携先サービスに自動追従できます。データマートなどの後処理用の設定を作る必要もありません。
また、スキーマ自動追従機能を利用することで、データソース側のスキーマ変更を検知し、転送先に自動反映も可能です。
これにより、簡単かつデータ鮮度の高い形でデータ分析環境を構築できます。
本機能の利用は、Professionalプランの契約が前提となります。
詳しくは、営業担当者またはカスタマーサクセスまでお問い合わせください。
アーキテクチャ
以下は、転送元 - MySQL・転送先 - Amazon S3 Icebergにおけるアーキテクチャです。
初回転送(全件転送)時

差分転送時

一部の転送先において、一時テーブルに転送してから本番テーブルへのマージを行います。
以下は、一時テーブルを経由するアーキテクチャです(例:転送元 - MySQL・転送先 - Google BigQuery)。
初回転送(全件転送)時

差分転送時

利用上の注意・制約
- Primary Keyが存在することが必須です。Primary KeyがないテーブルはCDCデータ転送の対象外となります。
- 転送元でBlue-Greenデプロイメントを利用している場合など、binlogやWALの継続性が担保されないケースでは、CDC転送に失敗する可能性があります。
対応コネクター
転送元コネクター
転送先コネクター
仕様詳細
ジョブの実行
転送先によって、ジョブのエラーが発生する条件が異なります。
- S3 Iceberg:転送対象のテーブルが1つでも転送失敗した場合、ジョブ全体が失敗となります。
- BigQuery:転送に失敗したテーブルのみをエラーとし、残りのテーブルの転送を継続します。詳しくは、同期対象のテーブル例外についてを参照ください。
CDCデータ転送の転送方式について説明します。
スキーマ自動追従やバックフィルの動作などの詳細は、CDCスキーマ自動追従を参照ください。
全件転送(全テーブル)
転送対象の全テーブルを全件転送します。
テーブル転送ステータスの全件転送(全テーブル) から実行できます。
CDCデータ転送設定を作成したら、まずは全件転送(全テーブル)を行ってください。
なお、転送先にテーブルが存在する状態で実施した場合、転送先にある既存テーブルは削除されます。ご注意ください。
全件転送(選択テーブル)
転送対象のテーブルを選んで全件転送します。
テーブル転送ステータスのアクション列から実行できます。
なお、転送先にテーブルが存在する状態で実施した場合、転送先にある既存テーブルは削除されます。ご注意ください。
差分転送
手動で差分転送を実施します。
画面右上の実行ボタンから実行できます。
スケジュール実行
スケジュール実行をONにすると、自動で転送を実施します。
実行間隔は以下より選択できます。
- 5分
- 10分
- 15分
- 20分
- 30分
- 60分
スケジュール実行では、状況に応じて転送方式が自動的に決定されます。
判定の優先順位は以下のとおりです。
- バックフィル設定が有効、かつバックフィルが必要なテーブルがある場合は、該当テーブルのみ全件転送(選択テーブル)を実行します。
- 上記以外の場合は、差分転送を実行します。
| 条件 | 転送方式 | 動作概要 |
|---|---|---|
| スキーマ変更あり、バックフィル設定が有効 | 全件転送(選択テーブル) | スキーマ変更が検知されたテーブルのみ全件再取得します。 |
| スキーマ変更あり、バックフィル設定が無効 | 差分転送 | 差分転送で続行します。転送先との不整合によりエラーが発生する可能性があります。 |
| スキーマ変更なし、変更データあり | 差分転送 | 蓄積された変更データのみを取得します。 |
| スキーマ変更なし、変更データなし | 差分転送 | 新規の変更がないため、差分なしで正常終了します。 |
転送対象に新規テーブルを追加した直後は、スケジュール実行が一時的に停止します。
スキーマ設定画面でテーブルを追加し更新するをクリックすると、確認モーダルが表示されます。
テーブル追加時は更新後、変更されたテーブルを再読み込みするが必須となるため、更新を確定すると自動的に全件転送(選択テーブル)のジョブが作成されます。
このジョブが成功すると、以降のスケジュール実行が再開されます。
バックフィルが実行される場合、同一のスケジュール実行内では差分転送は行われません。
バックフィル対象外のテーブルの差分転送は、次回のスケジュール実行で行われます。
バックフィル実行の影響を抑えるために、以下の設定を推奨します。
- スケジュール実行間隔を短く設定することで、差分転送の遅延を最小限に抑えられます。
- カラム型変更やカラム名変更などバックフィルを伴う変更は、データの鮮度要件が低い時間帯に実施します。
先に実行されていたジョブが終了する前に次のジョブの実行タイミングとなった場合は、先に実行されていたジョブが完了してから次のジョブが開始されます。
スキーマ管理
スキーマ設定タブでは、転送対象のテーブル・カラムを確認・修正できます。
なお、スキーマ設定は、データソース側の変更に自動で同期されます。
- テーブル・カラムが追加された場合:未選択状態で項目が追加されます。
- カラムのデータ型が変更された場合:追従されます。
- テーブル・カラムが削除された場合:項目が削除されます。
データソース側で追加されたテーブル・カラムを転送対象としたい場合は、スキーマ自動追従機能を利用するか、手動で選択してください。
また、転送先がGoogle BigQueryの場合は、スキーマ設定タブのカラム一覧から、転送先カラムの出力型をカラム単位で上書きできます。詳しくは、CDCデータ転送 - 転送先 - Google BigQueryを参照ください。
転送先カラム型の変更は、転送先がBigQueryのCDCデータ転送でのみ利用できます。転送先がS3 Icebergの場合は利用できません。
スキーマ自動追従
スキーマ自動追従とは、CDC転送設定側のスキーマが変更された場合に、転送先側テーブルのスキーマも自動的に修正される機能です。
詳しくは、CDCスキーマ自動追従を参照ください。
スキーマ変更通知
転送元のスキーマ変更を検知し、Slackやメールで通知する機能です。
CDC転送設定から設定できます。
変更履歴
CDC転送設定の変更履歴をJSONで確認できます。
転送データの重複・欠損リスクがあるため、復元機能に関しては対応していません。