TiCDC データレプリケーション機能
TiCDC (TiDB Change Data Capture)は、リアルタイムデータレプリケーションを実現するTiDBエコシステムの中核コンポーネントです。このドキュメントでは、TiCDCのデータレプリケーション機能について詳しく説明します。
TiCDCの仕組み
TiCDCはTiKV変更ログ(Raftログ)をリッスンし、行レベルのデータ変更(
INSERTDELETE操作)を下流と互換性のあるSQL文に変換します。TiCDCは上流データベースで実行された元のSQL文に依存しません。詳細についてはTiCDCがデータ変更を処理する方法UPDATEしてください。TiCDCは
UPDATEINSERTDELETEを生成します。詳細についてはTiCDCがデータ変更を処理する方法参照してください。TiCDCはトランザクションの最終的な一貫性を保証します。1 再実行ログ有効にすると、TiCDCは災害復旧シナリオにおいて最終的な一貫性を保証できます。3 同期ポイント有効にすると、TiCDCは一貫性のあるスナップショット読み取りとデータ整合性の検証をサポートします。
サポートされている下流システム
TiCDC は、次のようなさまざまな下流システムへのデータの複製をサポートしています。
- TiDBデータベースまたはその他のMySQL互換データベース
- アパッチカフカ
- メッセージキュー(MQ)タイプのシンク 、例えばパルサー
- ストレージ サービス (Amazon S3、GCS、Azure Blob Storage、NFS)
- Confluent Cloud 統合による Snowflake、ksqlDB、SQL Server
- Kafka で複製されたデータを消費するための Apache Flink
データ複製の範囲
TiCDC は、次の種類のアップストリーム データの変更をサポートします。
サポート対象:
- DDL および DML ステートメント (システム テーブルを除く)。
- インデックス操作(
ADD INDEXCREATE INDEX:ダウンストリームがTiDB、TiCDCADD INDEXおよびCREATE INDEXDDL操作を非同期的に実行します。の場合、変更フィードレプリケーションのレイテンシーへの影響を軽減します。 - 外部キー制約DDL文(
ADD FOREIGN KEY):TiCDCは上流のシステム変数設定を複製しません。下流の外部キー制約チェックを有効にするには、下流でforeign_key_checks手動で設定する必要があります。また、下流にデータを書き込む際に、TiCDCはセッションレベルの設定SET SESSION foreign_key_checks = OFF;を自動的に有効にします。したがって、下流でグローバル外部キーチェックが有効になっている場合でも、TiCDCによって書き込まれたデータは外部キー制約の検証をトリガーしません。
サポートされていません:
- アップストリーム システム テーブルで実行された DDL および DML ステートメント (
mysql.*およびinformation_schema.*を含む)。 - アップストリーム一時テーブルで実行された DDL および DML ステートメント。
- DQL (データ クエリ言語) および DCL (データ制御言語) ステートメント。
- アップストリーム システム テーブルで実行された DDL および DML ステートメント (
制限事項
TiCDCは特定のシナリオをサポートしていません。詳細についてはサポートされていないシナリオ参照してください。
TiCDCは上流データの変更の整合性のみを検証します。変更が上流または下流の制約に準拠しているかどうかは検証しません。データが下流の制約に違反している場合、TiCDCは下流への書き込み時にエラーを返します。
たとえば、変更フィードがすべての DDL イベントをフィルターするように設定されている場合、アップストリームが
DROP COLUMN操作を実行しても、その列に関連するINSERTステートメントの書き込みを継続すると、テーブル スキーマの不一致により、TiCDC はこれらの DML 変更をダウンストリームに複製できません。TiCDC 古典アーキテクチャの場合、単一の TiCDC クラスターによって複製されるテーブルの数が次の推奨値を超えると、TiCDC が安定して動作しない可能性があります。
TiCDCバージョン 複製するテーブルの推奨数 v5.4.0 - v6.4.x 2000 v6.5.x - v7.4.x 4000 v7.5.x - v8.5.x 40000 注記:
パーティション化されたテーブルを複製する場合、TiCDC は各パーティションを個別のテーブルとして扱います。そのため、複製するテーブルの総数を計算する際には、パーティション数も考慮されます。
複製するテーブルの数が前述の推奨値を超える場合は、 TiCDCの新しいアーキテクチャを使用することをお勧めします。新しいアーキテクチャでは、変更フィードごとに 100 万を超えるテーブルの複製がサポートされているため、大規模なレプリケーション シナリオに適しています。