Vitess から TiDB へのデータの移行

このドキュメントでは、 ヴィテスから TiDB にデータを移行するために使用できるツールについて説明します。

Vitess のバックエンドは MySQL に基づいているため、Vitess から TiDB にデータを移行する場合、 DumplingTiDB LightningTiDB データ移行 (DM)など、MySQL に適用されるのと同じ移行ツールを使用できます。これらのツールは、データ移行のために Vitess 内の各シャードに対して設定する必要があることに注意してください。

通常、データ移行の前に、 DM タスクをtask-modeallおよびimport-modephysicalに設定することが推奨されます。詳細については、 タスク構成ファイル テンプレート (詳細)参照してください。

データ サイズが 10 TiB を超える場合は、次の 2 つの手順でインポートを実行することをお勧めします。

  1. 既存のデータをインポートするには、 DumplingとTiDB Lightning を使用します。
  2. 増分データをインポートするには DM を使用します。

これらのツールに加えて、 Vitess 用 Debezium コネクタも使用できます。このコネクタを使用すると、 カフカコネクトまたはアパッチフリンク使用して、Vitess から TiDB に変更をストリーミングできます。

Vitess と TiDB はどちらも MySQL プロトコルと SQL 方言をサポートしているため、アプリケーション レベルでの変更は小さいと予想されます。ただし、シャーディングやその他の実装固有の側面を直接管理するタスクの場合、変更は大きくなる可能性があります。Vitess から TiDB へのデータ移行を容易にするために、TiDB はVITESS_HASH()関数を導入しています。この関数は、Vitess の HASH 関数と互換性のある文字列のハッシュを返します。

DumplingとTiDB Lightning

次の 2 つの例は、 DumplingとTiDB Lightning が連携して Vitess から TiDB にデータを移行する方法を示しています。

  • この例では、 TiDB Lightning は論理インポートモード使用します。これは、最初にデータを SQL ステートメントにエンコードし、次に SQL ステートメントを実行してデータをインポートします。

    Vitess to TiDB Migration with TiDB backend

  • この例では、 TiDB Lightning は物理インポートモード使用してデータを TiKV に直接取り込みます。

    Vitess to TiDB Migration with local backend

DM

次の例は、Vitess から TiDB にデータを移行するDMを示しています。

Vitess to TiDB with DM

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