シャードテーブルからのデータのマージと移行
このドキュメントでは、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 の処理時にデータの移行をブロックしないことです。ただし、不適切に使用すると、移行が中断されたり、データの不整合が発生したりすることがあります。詳細は楽観的モードでのシャードマージを参照してください。