論理インポートモードを使用する
このドキュメントでは、設定ファイルの作成やパフォーマンスのチューニングなど、 TiDB Lightningでの論理インポートモードの使用方法を紹介します。
論理インポートモードを設定して使用する
論理インポートモードを使用するには、以下の設定ファイルを使用します。
[lightning]
# log
level = "info"
file = "tidb-lightning.log"
max-size = 128 # MB
max-days = 28
max-backups = 14
# Checks the cluster minimum requirements before start.
check-requirements = true
[mydumper]
# The local data source directory or the URI of the external storage. For more information about the URI of the external storage, see https://docs.pingcap.com/tidb/stable/backup-and-restore-storages/#uri-format.
data-source-dir = "/data/my_database"
[tikv-importer]
# Import mode. "tidb" means using the logical import mode.
backend = "tidb"
[tidb]
# The information of the target cluster. The address of any tidb-server from the cluster.
host = "172.16.31.1"
port = 4000
user = "root"
# Configure the password to connect to TiDB. Either plaintext or Base64 encoded.
password = ""
# tidb-lightning imports the TiDB library, and generates some logs.
# Set the log level of the TiDB library.
log-level = "error"
完全な設定ファイルについては、 TiDB Lightning のコンフィグレーションを参照してください。
競合検出
競合データとは、PK列またはUK列に同じデータを持つレコードが2つ以上存在する状態を指します。論理インポートモードでは、 conflict.strategy設定項目を設定することで、競合データの処理戦略を構成できます。TiDB TiDB Lightningは、この戦略に基づいて、異なるSQLステートメントを使用してデータをインポートします。
戦略が"error"の場合、競合するデータによって発生したエラーはインポートタスクを直接終了させます。戦略が"replace"または"ignore"の場合、 conflict.thresholdを設定することで許容される競合の最大数を制御できます。デフォルト値は10000で、これは 10000 件のエラーが許容されることを意味します。
戦略が"ignore"の場合、競合するデータは下流のconflict_recordsテーブルに記録されます。詳細については、 エラーレポート参照してください。v8.1.0 より前は、 conflict.max-record-rowsを設定することでレコードを制限でき、制限を超える競合データはスキップされ、記録されません。v8.1.0 以降は、TiDB Lightning がconflict.threshold入力に関係なくmax-record-rowsの値にthresholdの値を自動的に割り当てるため、代わりにTiDB Lightning を設定する必要があります。
パフォーマンスチューニング
論理インポート モードでは、 TiDB Lightningのパフォーマンスはターゲット TiDB クラスターの書き込みパフォーマンスに大きく依存します。クラスターがパフォーマンスのボトルネックに達した場合は、 高並行書き込みのベストプラクティスを参照してください。
対象の TiDB クラスタで書き込みボトルネックが発生しない場合は、 TiDB Lightning構成の
region-concurrencyの値を増やすことを検討してください。region-concurrencyのデフォルト値は CPU コア数です。region-concurrencyの意味は、物理インポート モードと論理インポート モードで異なります。論理インポート モードでは、region-concurrencyは書き込み同時実行数です。設定例:
[lightning] region-concurrency = 32対象の TiDB クラスターで
raftstore.apply-pool-sizeおよびraftstore.store-pool-size設定項目を調整すると、インポート速度が向上する可能性があります。