チェンジフィードの概要

変更フィードは TiCDC のレプリケーション タスクであり、TiDB クラスター内の指定されたテーブルのデータ変更ログを指定されたダウンストリームにレプリケートします。TiCDC クラスターでは複数の変更フィードを実行および管理できます。

チェンジフィード状態転送

レプリケーション タスクの状態は、レプリケーション タスクの実行ステータスを表します。TiCDC の実行中に、レプリケーション タスクがエラーで失敗したり、手動で一時停止、再開されたり、指定されたTargetTsに到達したりすることがあります。これらの動作により、レプリケーション タスクの状態が変化する可能性があります。このセクションでは、TiCDC レプリケーション タスクの状態と、状態間の転送関係について説明します。

TiCDC state transfer

上記の状態転送図の各状態は、次のように説明されます。

  • Normal : レプリケーション タスクは正常に実行され、チェックポイント ts は正常に進行します。この状態の変更フィードは、GC の進行をブロックします。
  • Stopped : ユーザーが手動で変更フィードを一時停止したため、レプリケーション タスクは停止しています。この状態の変更フィードは GC 操作をブロックします。
  • Warning : レプリケーション タスクがエラーを返します。回復可能なエラーがあるため、レプリケーションを続行できません。この状態の変更フィードは、状態がNormalに移行するまで再開を試行し続けます。デフォルトの再試行時間は 30 分です ( changefeed-error-stuck-durationで調整可能)。この時間を超えると、変更フィードは失敗状態になります。この状態の変更フィードは、GC 操作をブロックします。
  • Finished : レプリケーション タスクが終了し、プリセットTargetTsに達しました。この状態の変更フィードは GC 操作をブロックしません。
  • Failed : レプリケーション タスクが失敗しました。この状態の変更フィードは再開を試行しません。障害に対処するための十分な時間を与えるために、この状態の変更フィードは GC 操作をブロックします。ブロックの期間はgc-ttlパラメーターで指定され、既定値は 24 時間です。この期間内に根本的な問題が解決された場合は、変更フィードを手動で再開できます。それ以外の場合、変更フィードがgc-ttl期間を超えてこの状態のままである場合は、レプリケーション タスクを再開できず、回復できません。

注記:

  • GC が changefeed によってブロックされた場合、 changefeed はgc-ttlで指定された時間まで GC の進行をブロックします。その後、 changefeed はfailed状態に設定され、エラー タイプはErrGCTTLExceededになり、 GC の進行をブロックしなくなります。
  • 変更フィードでエラー コードErrGCTTLExceeded 、またはErrStartTsBeforeGC ErrSnapshotLostByGCが発生した場合、GC 操作はブロックされません。

前述の状態遷移図の数字の意味は次のとおりです。

  • changefeed pauseコマンドを実行します。
  • changefeed resumeコマンドを実行してレプリケーションタスクを再開します。
  • changefeed操作中に回復可能なエラーが発生し、操作が自動的に再試行されます。
  • ④ チェンジフィード自動再試行が成功し、 checkpoint-ts進み続けます。
  • ⑤ changefeedの自動再試行が30分を超えて失敗し、changefeedは失敗状態になります。このとき、changefeedはgc-ttlで指定された期間、上流GCをブロックし続けます。
  • ⑥ チェンジフィードが回復不可能なエラーに遭遇し、直接失敗状態に入る。このとき、チェンジフィードはgc-ttlで指定された期間、上流GCをブロックし続ける。
  • ⑦ changefeedのレプリケーション進行状況がtarget-tsで設定した値に到達し、レプリケーションが完了します。
  • ⑧ チェンジフィードがgc-ttlで指定された値よりも長い期間中断されたため、GC 進行エラーが発生し、再開できません。
  • ⑨ 失敗の原因が解決され、変更フィードがgc-ttlで指定された値よりも短い期間中断された場合は、 changefeed resumeコマンドを実行してレプリケーション タスクを再開します。

チェンジフィードを操作する

コマンドラインツールcdc cliを使用して、TiCDC クラスターとそのレプリケーションタスクを管理できます。詳細については、 TiCDC の変更フィードを管理するを参照してください。

HTTP インターフェイス (TiCDC OpenAPI 機能) を使用して、TiCDC クラスターとそのレプリケーション タスクを管理することもできます。詳細については、 TiCDC オープンAPI参照してください。

TiCDC がTiUPを使用してデプロイされている場合は、 tiup cdc:v<CLUSTER_VERSION> cliコマンドを実行してcdc cli起動できます。 v<CLUSTER_VERSION> v8.1.0などの TiCDC クラスター バージョンに置き換えます。 cdc cli直接実行することもできます。

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