📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

チェンジフィードの概要

変更フィードは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はエラータイプがErrGCTTLExceededである状態failedに設定され、GCの進行をブロックしなくなります。
  • 変更フィードでエラー コードErrGCTTLExceeded 、またはErrStartTsBeforeGC ErrSnapshotLostByGCが発生した場合、GC 操作はブロックされません。

上記の状態遷移図の数字は以下のように表されます。

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

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

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

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

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

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