TiDB LightningFAQ

このドキュメントには、 TiDB Lightningに関するよくある質問 (FAQ) と回答が記載されています。

TiDB Lightningでサポートされている TiDB/TiKV/PD クラスタの最小バージョンは何ですか?

TiDB Lightningのバージョンは、クラスターと同じである必要があります。 Local-backend モードを使用する場合、利用可能な最も古いバージョンは 4.0.0 です。 Importer-backend モードまたは TiDB-backend モードを使用する場合、利用可能な最も古いバージョンは 2.0.9 ですが、3.0 安定バージョンを使用することをお勧めします。

TiDB Lightningは複数のスキーマ (データベース) のインポートをサポートしていますか?

はい。

ターゲット データベースの権限要件は何ですか?

権限の詳細については、 TiDB Lightningを使用するための前提条件を参照してください。

1 つのテーブルをインポートするときに、 TiDB Lightningでエラーが発生しました。他のテーブルに影響しますか?プロセスは終了しますか?

エラーが発生したテーブルが 1 つだけの場合でも、残りは正常に処理されます。

TiDB Lightningを適切に再起動するには?

Importer-backend を使用している場合、 tikv-importerのステータスに応じて、 TiDB Lightningを再起動する基本的なシーケンスは次のようになります。

tikv-importerがまだ実行中の場合:

  1. tidb-lightning停止する .
  2. ソースデータの修正、設定の変更、ハードウェアの交換など、意図した変更を実行します。
  3. 変更によって以前にいずれかのテーブルが変更された場合は、 対応するチェックポイントを削除しますも変更されます。
  4. tidb-lightningを開始します。

tikv-importerを再起動する必要がある場合:

  1. tidb-lightning停止する .
  2. tikv-importer停止する .
  3. ソースデータの修正、設定の変更、ハードウェアの交換など、意図した変更を実行します。
  4. tikv-importerを開始します。
  5. tidb-lightningを開始し、プログラムが CHECKSUM エラーで失敗するまで待ちます
    • tikv-importerを再起動すると、まだ書き込まれているすべてのエンジン ファイルが破棄されますが、 tidb-lightningはそのことを知りませんでした。 v3.0 の時点で、最も簡単な方法はtidb-lightningを続けて再試行することです。
  6. 失敗したテーブルとチェックポイントを破棄する
  7. tidb-lightningをやり直してください。

Local-backend または TiDB-backend を使用している場合、操作は、 tikv-importerがまだ実行されているときに Importer-backend を使用する場合と同じです。

インポートされたデータの整合性を確保するにはどうすればよいですか?

デフォルトでは、 TiDB Lightningはローカル データ ソースとインポートされたテーブルでチェックサムを実行します。チェックサムの不一致がある場合、プロセスは中止されます。これらのチェックサム情報は、ログから読み取ることができます。

ターゲット テーブルでADMIN CHECKSUM TABLE SQL コマンドを実行して、インポートされたデータのチェックサムを再計算することもできます。

ADMIN CHECKSUM TABLE `schema`.`table`;
+---------+------------+---------------------+-----------+-------------+ | Db_name | Table_name | Checksum_crc64_xor | Total_kvs | Total_bytes | +---------+------------+---------------------+-----------+-------------+ | schema | table | 5505282386844578743 | 3 | 96 | +---------+------------+---------------------+-----------+-------------+ 1 row in set (0.01 sec)

TiDB Lightningでサポートされているデータ ソース形式は何ですか?

TiDB Lightningは以下をサポートしています。

TiDB Lightningはスキーマとテーブルの作成をスキップできますか?

v5.1 から、 TiDB Lightningはダウンストリームのスキーマとテーブルを自動的に認識できるようになりました。 v5.1 より前のTiDB Lightningを使用している場合は、 tidb-lightning.toml[mydumper]セクションにno-schema = trueを設定する必要があります。これにより、 TiDB LightningはCREATE TABLEの呼び出しをスキップし、メタデータをターゲット データベースから直接フェッチします。テーブルが実際に欠落している場合、 TiDB Lightningはエラーで終了します。

厳密な SQL モードを無効にして、無効なデータをインポートできるようにすることはできますか?

はい。デフォルトでは、 TiDB Lightningで使用されるsql_mode"STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"であり、日付1970-00-00などの無効なデータは許可されません。モードは、 tidb-lightning.toml[tidb]セクションのsql-modeの設定を変更することで変更できます。

... [tidb] sql-mode = "" ...

1 つのtikv-importer importer で複数のtidb-lightningインスタンスを処理できますか?

はい、すべてのインスタンスが異なるテーブルでtidb-lightningする限り。

tikv-importerプロセスを停止するには?

tikv-importerのプロセスを停止するには、展開方法に応じて対応する操作を選択できます。

  • 手動デプロイの場合: tikv-importerがフォアグラウンドで実行されている場合は、 Ctrl + Cを押して終了します。それ以外の場合は、 ps aux | grep tikv-importerコマンドを使用してプロセス ID を取得し、 kill ${PID}コマンドを使用してプロセスを終了します。

tidb-lightningプロセスを停止するには?

tidb-lightningのプロセスを停止するには、展開方法に応じて対応する操作を選択できます。

  • 手動デプロイの場合: tidb-lightningがフォアグラウンドで実行されている場合は、 Ctrl + Cを押して終了します。それ以外の場合は、 ps aux | grep tidb-lightingコマンドを使用してプロセス ID を取得し、 kill -2 ${PID}コマンドを使用してプロセスを終了します。

TiDB Lightningは 1 ギガビット ネットワーク カードで使用できますか?

TiDB Lightningは、10 ギガビットのネットワーク カードで使用するのが最適です。

1 ギガビット ネットワーク カードは、合計 120 MB/秒の帯域幅しか提供できず、これをすべてのターゲット TiKV ストアで共有する必要があります。 TiDB Lightningは、物理インポート モードで 1 ギガビット ネットワークのすべての帯域幅を簡単に飽和させ、PD に接続できなくなるため、クラスターをダウンさせる可能性があります。

TiDB Lightningが対象の TiKV クラスタに大量の空き容量を必要とするのはなぜですか?

3 つのレプリカのデフォルト設定では、ターゲット TiKV クラスターのスペース要件は、データ ソースのサイズの 6 倍です。次の要因がデータ ソースに反映されていないため、余分な "2" の倍数は保守的な見積もりです。

  • インデックスが占めるスペース
  • RocksDB での空間増幅

TiDB Lightningの実行中に TiKV Importer を再起動できますか?

いいえ。TiKV Importer は、エンジンの一部の情報をメモリに保存します。 tikv-importerを再起動すると、 tidb-lightningは接続が失われたために停止します。この時点で、これらの TiKV Importer 固有の情報が失われるため、 失敗したチェックポイントを破棄するにする必要があります。TiDB Lightningを再起動できます。

正しい順序については、 TiDB Lightningを適切に再起動するには?も参照してください。

TiDB Lightningに関連するすべての中間データを完全に破棄するには?

  1. チェックポイント ファイルを削除します。

    tidb-lightning-ctl --config conf/tidb-lightning.toml --checkpoint-remove=all

    何らかの理由でこのコマンドを実行できない場合は、手動でファイルを削除してみてください/tmp/tidb_lightning_checkpoint.pb

  2. Local-backend を使用している場合は、構成でsorted-kv-dirのディレクトリを削除します。 Importer-backend を使用している場合は、 tikv-importerをホストしているマシンのimportディレクトリ全体を削除します。

  3. 必要に応じて、TiDB クラスターで作成されたすべてのテーブルとデータベースを削除します。

  4. 残りのメタデータをクリーンアップします。次のいずれかの条件が存在する場合は、メタデータ スキーマを手動でクリーンアップする必要があります。

    • TiDB Lightning v5.1.x および v5.2.x バージョンの場合、 tidb-lightning-ctlコマンドはターゲット クラスターのメタデータ スキーマをクリーンアップしません。手動でクリーンアップする必要があります。
    • チェックポイント ファイルを手動で削除した場合は、ダウンストリーム メタデータ スキーマを手動でクリーンアップする必要があります。そうしないと、後続のインポートの正確性が影響を受ける可能性があります。

    次のコマンドを使用して、メタデータをクリーンアップします。

    DROP DATABASE IF EXISTS `lightning_metadata`;

TiDB Lightningの実行時のゴルーチン情報を取得する方法

  1. TiDB Lightningの設定ファイルにstatus-portが指定されている場合は、この手順をスキップしてください。それ以外の場合は、 USR1 シグナルをTiDB Lightningに送信してstatus-portを有効にする必要があります。

    psなどのコマンドを使用してTiDB Lightningのプロセス ID (PID) を取得し、次のコマンドを実行します。

    kill -USR1 <lightning-pid>

    TiDB Lightningのログを確認してください。 starting HTTP serverのログは、新しく有効になったstatus-portを示してstarted HTTP server start HTTP server

  2. http://<lightning-ip>:<status-port>/debug/pprof/goroutine?debug=2にアクセスして、ゴルーチン情報を取得します。