重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

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

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