Vitess から TiDB へのデータの移行
このドキュメントでは、 ヴィテスから TiDB にデータを移行するために使用できるツールについて説明します。
Vitess のバックエンドは MySQL に基づいているため、Vitess から TiDB にデータを移行する場合、 Dumpling 、 TiDB Lightning 、 TiDB データ移行 (DM)など、MySQL に適用されるのと同じ移行ツールを使用できます。これらのツールは、データ移行のために Vitess 内の各シャードに対して設定する必要があることに注意してください。
通常、データ移行の前に、 DM タスクをtask-mode
~ all
およびimport-mode
~ physical
に設定することが推奨されます。詳細については、 タスク構成ファイル テンプレート (詳細)参照してください。
データ サイズが 10 TiB を超える場合は、次の 2 つの手順でインポートを実行することをお勧めします。
- 既存のデータをインポートするには、 DumplingとTiDB Lightning を使用します。
- 増分データをインポートするには 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 ステートメントを実行してデータをインポートします。
この例では、 TiDB Lightning は物理インポートモード使用してデータを TiKV に直接取り込みます。
DM
次の例は、Vitess から TiDB にデータを移行するDMを示しています。