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

このドキュメントでは、データ移行 (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操作は下流に移行され、検出前に上流と下流のデータに不整合が生じる可能性があります。

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