TiCDC の互換性
このセクションでは、TiCDC に関連する互換性の問題とその処理方法について説明します。
TiDB Lightningとの互換性
TiDB Lightningには、 論理インポートモードと物理インポートモード 2つのデータインポートモードがあります。このセクションでは、これらのモードと TiCDC の互換性、およびクラスター内でTiDB Lightningと TiCDC を併用する手順について説明します。
論理インポートモードでは、 TiDB LightningはSQL文を実行してデータをインポートします。このモードはTiCDCと互換性があります。TiDB Lightningの論理インポートモードをTiCDCと組み合わせてデータレプリケーションに使用するには、以下の手順を実行してください。
- 変更フィードを作成します。詳細については、 レプリケーションタスクを作成する参照してください。
- TiDB Lightningを起動し、論理インポートモードを使用してデータをインポートします。詳細については、 論理インポートモードを使用する参照してください。
物理インポートモードでは、 TiDB LightningはSSTファイルをTiKVに挿入することでデータをインポートします。TiCDCはこのモードと互換性がなく、物理インポートモードでインポートされたデータの複製をサポートしていません。TiDB Lightningの物理インポートモードとTiCDCの両方を使用する必要がある場合は、下流システムに応じて以下のいずれかのソリューションを選択してください。
ダウンストリームが TiDB クラスターの場合は、次の手順を実行します。
- TiDB Lightningを使用して、上流と下流の両方の TiDB クラスターにデータをインポートし、データの一貫性を確保します。
- SQLを通じて書き込まれた後続の増分データを複製するための変更フィードを作成します。詳細については、 レプリケーションタスクを作成する参照してください。
ダウンストリームが TiDB クラスターでない場合は、次の手順を実行します。
- 下流システムが提供するオフライン インポート ツールを使用して、TiDB Lightning の入力ファイルをインポートします。
- SQLを通じて書き込まれた後続の増分データを複製するための変更フィードを作成します。詳細については、 レプリケーションタスクを作成する参照してください。
TiFlashとの互換性
現在、TiCDC を使用してテーブルをダウンストリーム TiDB クラスターにレプリケートする場合、テーブルのTiFlashレプリカの作成はサポートされていません。つまり、TiCDC は次のようなTiFlash関連の DDL ステートメントのレプリケートをサポートしていません。
ALTER TABLE table_name SET TIFLASH REPLICA count;ALTER DATABASE db_name SET TIFLASH REPLICA count;
CLIと設定ファイルの互換性
- TiCDC v4.0.0 では、
ignore-txn-commit-tsが削除され、start_ts を使用してトランザクションをフィルター処理するignore-txn-start-ts追加されました。 - TiCDC v4.0.2では、
db-dbs/db-tables/ignore-dbs/ignore-tablesが削除され、データベースとテーブルに新しいフィルタールールを使用するrules追加されました。詳細なフィルター構文については、 テーブルフィルター参照してください。 - TiCDC v6.2.0以降、
cdc cliTiCDC Open APIを介してTiCDCサーバーに直接アクセスできるようになりました。3--serverを使用してTiCDCサーバーのアドレスを指定できます。5--pd非推奨です。 - v6.4.0 以降、
SYSTEM_VARIABLES_ADMINまたはSUPER権限を持つ changefeed のみが TiCDC Syncpoint 機能を使用できます。
互換性の問題に対処する
このセクションでは、TiCDC に関連する互換性の問題とその処理方法について説明します。
TiCDC v5.0.0-rc cdc cliツールを使用して v4.0.x クラスターを操作することによって発生する非互換性の問題
TiCDC v5.0.0-rc のcdc cliツールを使用して v4.0.x TiCDC クラスターを操作すると、次の異常な状況が発生する可能性があります。
TiCDC クラスターが v4.0.8 以前のバージョンの場合、v5.0.0-rc
cdc cliツールを使用してレプリケーション タスクを作成すると、クラスターの異常が発生し、レプリケーション タスクが停止する可能性があります。TiCDC クラスターが v4.0.9 以降のバージョンの場合、v5.0.0-rc
cdc cliツールを使用してレプリケーション タスクを作成すると、古い値と統合ソーター機能が予期せずデフォルトで有効になります。
解決策:
TiCDC クラスター バージョンに対応するcdc実行可能ファイルを使用して、次の操作を実行します。
- v5.0.0-rc
cdc cliツールを使用して作成された変更フィードを削除します。例えば、コマンドtiup cdc:v4.0.9 cli changefeed remove -c xxxx --pd=xxxxx --forceを実行します。 - レプリケーションタスクが停止している場合は、TiCDC クラスターを再起動してください。例えば、コマンド
tiup cluster restart <cluster_name> -R cdcを実行してください。 - 変更フィードを再作成します。例えば、コマンド
tiup cdc:v4.0.9 cli changefeed create --sink-uri=xxxx --pd=xxxを実行します。
注記:
この問題は、
cdc cliv5.0.0-rc の場合にのみ発生します。3 他の v5.0.x バージョンのcdc cliは、v4.0.x クラスターと互換性があります。
sort-dirとdata-dir互換性に関する注意事項
sort-dir設定は、TiCDC ソーターの一時ファイルディレクトリを指定するために使用されます。機能はバージョンによって異なる場合があります。次の表は、 sort-dirにおけるバージョン間の互換性の変更点を示しています。
| バージョン | sort-engine機能 | 注記 | おすすめ |
|---|---|---|---|
| v4.0.11 またはそれ以前の v4.0 バージョン、v5.0.0-rc | これは、チェンジフィード構成項目であり、 fileソーターおよびunifiedソーターの一時ファイル ディレクトリを指定します。 | これらのバージョンでは、 fileソーターとunifiedソーターは実験的機能であり、本番環境には推奨されません。複数の changefeed が unifiedソーターをsort-engineとして使用する場合、実際の一時ファイル ディレクトリはいずれかの changefeed のsort-dir構成になる可能性があり、各 TiCDC ノードに使用されるディレクトリは異なる場合があります。 | 本番環境でunifiedソーターを使用することはお勧めしません。 |
| v4.0.12、v4.0.13、v5.0.0、および v5.0.1 | これは changefeed またはcdc serverの構成項目です。 | デフォルトでは、changefeed のsort-dir設定は有効にならず、 cdc serverのsort-dir設定はデフォルトで/tmp/cdc_sortに設定されます。本番環境ではcdc serverのみを設定することをお勧めします。TiUPを使用して TiCDC を展開する場合は、最新のTiUPバージョンを使用し、TiCDCサーバー構成で sorter.sort-dir設定することをお勧めします。unifiedソーターは、v4.0.13、v5.0.0、v5.0.1 ではデフォルトで有効になっています。クラスターをこれらのバージョンにアップグレードする場合は、TiCDCサーバー構成でsorter.sort-dir正しく設定されていることを確認してください。 | cdc serverコマンドラインパラメータ (またはTiUP) を使用してsort-dir設定する必要があります。 |
| v4.0.14 以降の v4.0 バージョン、v5.0.3 以降の v5.0 バージョン、それ以降の TiDB バージョン | sort-dirは非推奨です。 data-dir設定することをお勧めします。 | 最新バージョンのTiUPを使用してdata-dir設定できます。これらのTiDBバージョンでは、 unifiedソーターがデフォルトで有効になっています。クラスタをアップグレードする際は、 data-dir正しく設定されていることを確認してください。正しく設定されていない場合、一時ファイルディレクトリとしてデフォルトで/tmp/cdc_data使用されます。ディレクトリが配置されているデバイスのstorage容量が不足している場合、ハードディスク容量不足の問題が発生する可能性があります。この場合、以前の sort-dirのchangefeed設定は無効になります。 | cdc serverコマンドラインパラメータ (またはTiUP) を使用してdata-dir設定する必要があります。 |
| v6.0.0以降のバージョン | data-dir 、TiCDC によって生成された一時ファイルを保存するために使用されます。 | v6.0.0 以降、TiCDC はデフォルトでソート エンジンとしてdb sorter使用します。3 data-dirこのエンジンのディスク ディレクトリです。 | cdc serverコマンドラインパラメータ (またはTiUP) を使用してdata-dir設定する必要があります。 |
一時テーブルとの互換性
v5.3.0 以降、TiCDC はグローバル一時テーブルサポートします。v5.3.0 より前のバージョンの TiCDC を使用してグローバル一時テーブルをダウンストリームに複製すると、テーブル定義エラーが発生します。
上流クラスターにグローバル一時テーブルが含まれている場合、下流TiDBクラスターはv5.3.0以降のバージョンである必要があります。それ以外の場合、レプリケーションプロセス中にエラーが発生します。
ベクトルデータ型との互換性
v8.4.0 以降、TiCDC は、 ベクトルデータ型からダウンストリームへのテーブルの複製をサポートします (実験的)。
ダウンストリームが Kafka またはstorageサービス (Amazon S3、GCS、Azure Blob Storage、NFS など) の場合、TiCDC はダウンストリームに書き込む前にベクトル データ型を文字列型に変換します。
ダウンストリームがMySQL互換データベースで、ベクトルデータ型をサポートしていない場合、TiCDCはベクトル型を含むDDLイベントをダウンストリームに書き込むことができません。この場合、 sink-urlにhas-vector-type=trueパラメータを追加することで、TiCDCは書き込み前にベクトルデータ型をLONGTEXT型に変換できます。