TiDBLightningの概要

TiDB Lightningは、大量のデータをTiDBクラスタに高速に完全にインポートするために使用されるツールです。 TiDBLightningはここからダウンロードできます。

現在、TiDB Lightningは、主に次の2つのシナリオで使用できます。

  • 大量新しいデータをすばやくインポートする
  • すべてのバックアップデータを復元する

現在、TiDBLightningは以下をサポートしています。

TiDBLightningアーキテクチャ

Architecture of TiDB Lightning tool set

完全なインポートプロセスは次のとおりです。

  1. インポートする前に、 tidb-lightningはTiKVクラスタを「インポートモード」に切り替えます。これにより、クラスタの書き込みが最適化され、自動圧縮が無効になります。

  2. tidb-lightningは、データソースからすべてのテーブルのスケルトンを作成します。

  3. 各テーブルは複数の連続したバッチに分割されるため、巨大なテーブル(200 GB以上)のデータを段階的かつ同時にインポートできます。

  4. バッチごとに、 tidb-lightningはKVペアを格納するためのエンジンファイルを作成します。次に、 tidb-lightningはデータソースを並列に読み取り、TiDBルールに従って各行をKVペアに変換し、これらのKVペアを一時ストレージ用のローカルファイルに書き込みます。

  5. 完全なエンジンファイルが書き込まれると、 tidb-lightningはこれらのデータを分割してスケジュールし、ターゲットTiKVクラスタにインポートします。

    エンジンファイルには、データエンジンインデックスエンジンの2種類があり、それぞれが行データとセカンダリインデックスの2種類のKVペアに対応しています。通常、行データはデータソースで完全に並べ替えられますが、セカンダリインデックスは順序が狂っています。このため、データエンジンはバッチが完了するとすぐにアップロードされますが、インデックスエンジンは、テーブル全体のすべてのバッチがエンコードされた後にのみインポートされます。

  6. テーブルに関連付けられているすべてのエンジンがインポートされた後、 tidb-lightningは、ローカルデータソースとクラスタから計算されたエンジンとの間でチェックサム比較を実行し、プロセスでデータの破損がないことを確認します。最適なクエリプランニングの準備をするために、インポートされたすべてのテーブルをTiDBにANALYZE指示します。将来の挿入で競合が発生しないように、 AUTO_INCREMENTの値を調整します。

    テーブルの自動インクリメントIDは、テーブルのデータファイルの合計ファイルサイズに比例する行数の推定上限によって計算されます。したがって、最終的な自動インクリメントIDは、実際の行数よりもはるかに大きいことがよくあります。 TiDBでは自動インクリメントが必ずしも順番に割り当てられるとは限りませんであるため、これは予想されます。

  7. 最後に、 tidb-lightningはTiKVクラスタを「通常モード」に戻すため、クラスタは通常のサービスを再開します。

データインポートのターゲットクラスタがv3.x以前のバージョンの場合は、インポーターバックエンドを使用してデータをインポートする必要があります。このモードでは、 tidb-lightningは解析されたKVペアをgRPC経由でtikv-importerに送信し、 tikv-importerはデータをインポートします。

TiDB Lightningは、データのインポートにTiDBバックエンドを使用することもサポートしています。このモードでは、 tidb-lightningはデータをINSERTのSQLステートメントに変換し、それらをターゲットクラスタで直接実行します。詳細については、 TiDBLightningバックエンドを参照してください。

制限

  • TiDB LightningをTiFlashと一緒に使用する場合:

    テーブルにTiFlashレプリカがあるかどうかに関係なく、TiDBLightningを使用してそのテーブルにデータをインポートできます。これにより、TiDB Lightningの手順が遅くなる可能性があることに注意してください。これは、LightningホストのNIC帯域幅、TiFlashノードのCPUとディスクの負荷、およびTiFlashレプリカの数によって異なります。

  • TiDB LightningをTiDBと一緒に使用する場合:

    TiDB Lightningは、v5.4.0より前のTiDBクラスターへのcharset=GBKのテーブルのインポートをサポートしていません。

  • Apache Parquetファイルの場合、TiDBLightningは現在Auroraファイルのみを受け入れます。

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