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

シャードテーブルからのデータのマージと移行

このドキュメントでは、データ移行(DM)が提供するシャーディングサポート機能について紹介します。この機能を使用すると、上流のMySQLまたはMariaDBインスタンスにある、同一または異なるテーブルスキーマを持つテーブルのデータを、下流のTiDBの同じテーブルにマージして移行できます。上流のDMLステートメントの移行だけでなく、複数の上流シャードテーブルにおけるDDLステートメントを使用したテーブルスキーマ変更の移行もサポートします。

概要

DMは、複数の上流シャードテーブルのデータをTiDB内の1つのテーブルにマージして移行する機能をサポートしています。移行中は、各シャードテーブルのDDLと、その前後のDMLを調整する必要があります。DMは、これらの使用シナリオに合わせて、悲観的モードと楽観的モードの2つのモードをサポートしています。

注記:

  • シャード化されたテーブルからデータをマージして移行するには、タスク構成ファイルでshard-mode設定する必要があります。
  • DM は、シャーディングサポート機能のマージに、デフォルトで悲観的モードを使用します。(ドキュメントに特別な記述がない場合は、デフォルトで悲観的モードを使用します。)
  • 楽観的モードの原理と制限事項を理解していない場合は、このモードの使用は推奨されません。理解していない場合は、移行の中断やデータの不整合など、深刻な結果を招く可能性があります。

悲観的モード

上流のシャードテーブルがDDL文を実行すると、そのシャードテーブルの移行は一時停止されます。他のすべてのシャードテーブルが同じDDL文を実行すると、下流のシャードテーブルでDDLが実行され、データ移行タスクが再開されます。このモードの利点は、下流に移行されたデータに問題がないことを保証できることです。詳細は悲観的モードでのシャードマージを参照してください。

楽観的モード

DMは、シャードテーブルで実行されたDDLを他のシャードテーブルと互換性のある文に自動的に修正し、下流のテーブルに移行します。これにより、シャードテーブルのDML移行がブロックされることはありません。このモードの利点は、DDL処理中にデータ移行がブロックされないことです。ただし、不適切な使用は移行の中断やデータの不整合を引き起こす可能性があります。詳細については、 楽観的モードでのシャードマージを参照してください。

対比

悲観モード楽観モード
DDL を実行するシャードテーブルは DML 移行を中断しますDDLを実行するシャードテーブルはDML移行を継続します
各シャードテーブルのDDL実行順序とステートメントは同じである必要があります各シャードテーブルは、テーブルスキーマの互換性を維持するだけでよい。
シャードグループ全体の一貫性が確保された後、DDLはダウンストリームに移行されます。各シャードテーブルのDDLはすぐに下流に影響します。
不正なDDL操作は検出後に傍受される可能性がある間違ったDDL操作は下流に移行され、検出前に上流と下流のデータに不整合が生じる可能性があります。

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