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

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

概要

DM は、複数のアップストリーム シャード テーブルのデータを TiDB の 1 つのテーブルにマージおよび移行することをサポートしています。移行中、各シャード テーブルの DDL と、DDL の前後の DML を調整する必要があります。使用シナリオでは、DM は悲観モードと楽観モードの 2 つの異なるモードをサポートしています。

ノート:

  • シャード テーブルからデータをマージおよび移行するには、タスク構成ファイルでshard-modeを設定する必要があります。
  • DM は、シャーディング サポート機能のマージにデフォルトでペシミスティック モードを使用します。 (ドキュメントに特別な記述がない場合は、デフォルトで悲観モードを使用してください。)
  • 楽観的モードの原則と制限を理解していない場合は、このモードを使用することはお勧めしません。そうしないと、移行の中断やデータの不整合など、重大な結果が生じる可能性があります。

悲観モード

アップストリームのシャード テーブルが DDL ステートメントを実行すると、このシャード テーブルの移行は中断されます。他のすべてのシャード テーブルが同じ DDL を実行した後、DDL がダウンストリームで実行され、データ移行タスクが再開されます。このモードの利点は、ダウンストリームに移行されたデータに問題がないことを保証できることです。詳細については、 ペシミスティック モードでのシャード マージを参照してください。

楽観モード

DM は、シャード テーブルで実行された DDL を他のシャード テーブルと互換性のあるステートメントに自動的に変更し、ダウンストリームに移行します。これにより、シャード テーブルの DML 移行がブロックされることはありません。このモードの利点は、DDL の処理時にデータ移行をブロックしないことです。ただし、不適切に使用すると、移行が中断されたり、データの不整合が発生したりする可能性があります。詳細については、 オプティミスティック モードでのシャード マージを参照してください。

対比

悲観モード楽観モード
DDL サスペンド DML 移行を実行するシャード テーブルDDL を実行するシャード テーブルは、DML 移行を続行します
各シャード テーブルの DDL 実行順序とステートメントは同じである必要があります各シャード テーブルは、テーブル スキーマの相互互換性を維持するだけで済みます
シャード グループ全体の整合性が取れた後、DDL はダウンストリームに移行されます。各シャード テーブルの DDL はすぐにダウンストリームに影響します。
検出後に間違った DDL 操作を傍受できる間違った DDL 操作がダウンストリームに移行されるため、検出前にアップストリーム データとダウンストリーム データの間に矛盾が生じる可能性があります。