シャーディングされたテーブルからのデータのマージと移行

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

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