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

このドキュメントでは、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 操作はダウンストリームに移行され、検出される前にアップストリーム データとダウンストリーム データの間で不整合が発生する可能性があります。

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