TiCDC データレプリケーション機能

TiCDC (TiDB Change Data Capture)は、リアルタイムデータレプリケーションを実現するTiDBエコシステムの中核コンポーネントです。このドキュメントでは、TiCDCのデータレプリケーション機能について詳しく説明します。

TiCDCの仕組み

  • TiCDCはTiKV変更ログ(Raftログ)をリッスンし、行レベルのデータ変更( INSERT DELETE操作) UPDATE下流と互換性のあるSQL文に変換します。TiCDCは上流データベースで実行された元のSQL文に依存しません。詳細については、 TiCDCがデータ変更を処理する方法参照してください。

  • TiCDCは、上流データベースで実行された元のSQL文UPDATE一つ一つ復元するのではなく、SQLセマンティクスに相当する論理演算( INSERTなど)を生成します。詳細についてはTiCDCがデータ変更を処理する方法 DELETEしてください。

  • TiCDCはトランザクションの最終的な一貫性を保証します。1 再実行ログ有効にすると、TiCDCは災害復旧シナリオにおいて最終的な一貫性を保証できます。3 同期ポイント有効にすると、TiCDCは一貫性のあるスナップショット読み取りとデータ整合性の検証をサポートします。

サポートされている下流システム

TiCDC は、次のようなさまざまな下流システムへのデータの複製をサポートしています。

データ複製の範囲

TiCDC は、次の種類のアップストリーム データの変更をサポートします。

  • サポート対象:

    • DDL および DML ステートメント (システム テーブルを除く)。
    • インデックス操作 ( ADD INDEXCREATE INDEX ): ダウンストリームが TiDB、TiCDC ADD INDEXおよびCREATE INDEX DDL操作を非同期に実行します。の場合、変更フィードレプリケーションのレイテンシーへの影響を軽減します。
    • 外部キー制約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 (データ制御言語) ステートメント。

制限事項

  • TiCDCは特定のシナリオをサポートしていません。詳細についてはサポートされていないシナリオ参照してください。

  • TiCDCは上流データの変更の整合性のみを検証します。変更が上流または下流の制約に準拠しているかどうかは検証しません。データが下流の制約に違反している場合、TiCDCは下流への書き込み時にエラーを返します。

    たとえば、変更フィードがすべての DDL イベントをフィルターするように構成されている場合、アップストリームがDROP COLUMN操作を実行しても、その列に関連するINSERTステートメントの書き込みを継続すると、テーブル スキーマの不一致により、TiCDC はこれらの DML 変更をダウンストリームに複製できません。

このページは役に立ちましたか?