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