このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください

コンフィグレーションを動的に変更する

このドキュメントでは、クラスター構成を動的に変更する方法について説明します。

クラスタコンポーネントを再起動することなく、SQL文を使用してコンポーネント(TiDB、TiKV、PDを含む)の構成を動的に更新できます。現在、TiDBインスタンスの構成変更方法は、他のコンポーネント(TiKVやPDなど)の構成変更方法とは異なります。

注記:

この機能はTiDB Self-Managedにのみ適用され、 TiDB Cloudでは利用できません。TiDB TiDB Cloudの場合は、設定を変更するにはTiDB Cloudサポートお問い合わせください。

一般的な操作

このセクションでは、構成を動的に変更する一般的な操作について説明します。

インスタンス構成のビュー

クラスター内のすべてのインスタンスの構成を表示するには、 show configステートメントを使用します。結果は次のようになります。

show config;
+------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tidb | 127.0.0.1:4001 | advertise-address | 127.0.0.1 | | tidb | 127.0.0.1:4001 | binlog.binlog-socket | | | tidb | 127.0.0.1:4001 | binlog.enable | false | | tidb | 127.0.0.1:4001 | binlog.ignore-error | false | | tidb | 127.0.0.1:4001 | binlog.strategy | range | | tidb | 127.0.0.1:4001 | binlog.write-timeout | 15s | | tidb | 127.0.0.1:4001 | check-mb4-value-in-utf8 | true | ...

結果をフィールドでフィルタリングできます。例:

show config where type='tidb' show config where instance in (...) show config where name like '%log%' show config where type='tikv' and name='log.level'

TiKV 構成を動的に変更する

注記:

  • TiKV設定項目を動的に変更すると、TiKV設定ファイルは自動的に更新されます。ただし、 tiup edit-config実行して対応する設定項目も変更する必要があります。そうしないと、 upgradereloadなどの操作によって変更内容が上書きされてしまいます。設定項目の変更方法の詳細については、 TiUPを使用して構成を変更するを参照してください。
  • tiup edit-config実行した後、 tiup reload実行する必要はありません。

set configステートメントを使用すると、インスタンス アドレスまたはコンポーネントタイプに応じて、単一のインスタンスまたはすべてのインスタンスの構成を変更できます。

  • すべての TiKV インスタンスの構成を変更します。

注記:

変数名はバッククォートで囲むことをお勧めします。

set config tikv `split.qps-threshold`=1000;
  • 単一の TiKV インスタンスの構成を変更します。

    set config "127.0.0.1:20180" `split.qps-threshold`=1000;

変更が成功した場合、 Query OKが返されます。

Query OK, 0 rows affected (0.01 sec)

バッチ変更中にエラーが発生した場合は、警告が返されます。

set config tikv `log-level`='warn';
Query OK, 0 rows affected, 1 warning (0.04 sec)
show warnings;
+---------+------+---------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------+ | Warning | 1105 | bad request to http://127.0.0.1:20180/config: fail to update, error: "config log-level can not be changed" | +---------+------+---------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)

バッチ変更はアトミック性を保証するものではありません。一部のインスタンスでは変更が成功し、他のインスタンスでは失敗する可能性があります。1 set tikv key=val使用して TiKV クラスター全体の設定を変更した場合、一部のインスタンスでは変更が失敗する可能性があります。3 show warnings使用して結果を確認できます。

変更が失敗した場合は、該当するステートメントを再実行するか、失敗したインスタンスを個別に変更する必要があります。ネットワークの問題やマシンの障害により一部のTiKVインスタンスにアクセスできない場合は、復旧後にこれらのインスタンスを変更してください。

設定項目の変更に成功した場合、その結果は設定ファイルに保存され、以降の操作に反映されます。一部の設定項目の名前は、 limitkeyなど、TiDBの予約語と競合する場合があります。これらの設定項目は、バッククォート`で囲んでください。例: `raftstore.raft-log-gc-size-limit`

次の TiKV 構成項目は動的に変更できます。

コンフィグレーション項目説明
ログレベルログ レベル。
raftstore.raft-max-inflight-msgs確認するRaftログの数。この数を超えると、 Raftステートマシンはログ送信を遅くします。
raftstore.raft-log-gc-tick-intervalRaftログを削除するポーリングタスクがスケジュールされる時間間隔
raftstore.raft-log-gc-threshold残存Raftログの最大許容数に関するソフト制限
raftstore.raft-log-gc-count-limit許容される残存Raftログ数のハードリミット
raftstore.raft-log-gc-size-limit残余Raftの許容サイズに関する厳密な制限
raftstore.raft-max-size-per-msg生成できる単一のメッセージパケットのサイズのソフト制限
raftstore.raft-entry-max-size単一のRaftログの最大サイズに対するハード制限
raftstore.raft-entry-cache-life-timeメモリ内のログキャッシュに許容される最大残り時間
raftstore.max-apply-unpersisted-log-limitコミットされたが永続化されていないRaftログの最大数を適用できます
raftstore.split-region-check-tick-intervalリージョン分割が必要かどうかを確認する時間間隔
raftstore.region-split-check-diffリージョン分割前にリージョンデータが超過できる最大値
raftstore.region-compact-check-intervalRocksDB 圧縮を手動でトリガーする必要があるかどうかを確認する時間間隔
raftstore.region-compact-check-step手動圧縮の各ラウンドで一度にチェックされる領域の数
raftstore.region-compact-min-tombstonesRocksDBの圧縮をトリガーするために必要なトゥームストーンの数
raftstore.region-compact-tombstones-percentRocksDBの圧縮をトリガーするために必要なトゥームストーンの割合
raftstore.pd-heartbeat-tick-intervalPDへのリージョンのハートビートがトリガーされる時間間隔
raftstore.pd-store-heartbeat-tick-interval店舗のPDへのハートビートがトリガーされる時間間隔
raftstore.snap-mgr-gc-tick-interval期限切れのスナップショットファイルのリサイクルがトリガーされる時間間隔
raftstore.snap-gc-timeoutスナップショットファイルが保存される最長時間
raftstore.lock-cf-compact-intervalTiKVがロックカラムファミリーの手動圧縮をトリガーする時間間隔
raftstore.lock-cf-compact-bytes-thresholdTiKVがロックカラムファミリーの手動圧縮をトリガーするサイズ
raftstore.messages-per-tickバッチごとに処理されるメッセージの最大数
raftstore.max-peer-down-durationピアに許可される最長の非アクティブ期間
raftstore.max-leader-missing-durationピアがリーダーなしでいられる最長時間。この値を超えると、ピアはPDを使用して、自身が削除されたかどうかを確認します。
raftstore.abnormal-leader-missing-durationピアがリーダーなしで待機できる通常の期間。この値を超えると、ピアは異常とみなされ、メトリックとログにマークされます。
raftstore.peer-stale-state-check-intervalピアにリーダーがいないかどうかを確認する時間間隔
raftstore.consistency-check-interval一貫性をチェックする時間間隔(TiDB のガベージコレクションと互換性がないため、推奨されません
raftstore.raft-store-max-leader-leaseRaftリーダーの最も長い信頼期間
raftstore.merge-check-tick-intervalマージチェックの時間間隔
raftstore.cleanup-import-sst-interval期限切れのSSTファイルをチェックする時間間隔
raftstore.local-read-batch-size1バッチで処理される読み取り要求の最大数
raftstore.apply-yield-write-sizeApplyスレッドが各ラウンドで1つのFSM(有限状態マシン)に書き込むことができる最大バイト数
raftstore.hibernate-timeout起動時に休止状態に入るまでの最短待機時間。この時間内は、TiKV は休止状態になりません(解放されません)。
raftstore.apply-pool-sizeディスクにデータをフラッシュするプール内のスレッドの数。これは適用スレッド プールのサイズです。
raftstore.store-pool-sizeRaftを処理するプール内のスレッドの数。これはRaftstoreスレッドプールのサイズです。
raftstore.apply-max-batch-sizeRaftステートマシンは、BatchSystemによってデータ書き込みリクエストをバッチ処理します。この設定項目は、1バッチでリクエストを実行できるRaftステートマシンの最大数を指定します。
raftstore.store-max-batch-sizeRaftステートマシンは、BatchSystemによってログをディスクにフラッシュするリクエストをバッチ処理します。この設定項目は、1回のバッチ処理でリクエストを処理できるRaftステートマシンの最大数を指定します。
raftstore.store-io-pool-sizeRaft I/Oタスクを処理するスレッドの数。これはStoreWriterスレッドプールのサイズでもあります(この値を0以外の値から0に変更したり、0から0以外の値に変更したりしないでください)。
raftstore.periodic-full-compact-start-max-cpu完全圧縮が有効な場合に TiKV が定期的に完全圧縮を実行する CPU 使用率のしきい値
readpool.unified.max-thread-count読み取り要求を均一に処理するスレッド プール内のスレッドの最大数。これは UnifyReadPool スレッド プールのサイズです。
readpool.unified.max-tasks-per-worker統合読み取りプール内の 1 つのスレッドに許可されるタスクの最大数。値を超えるとServer Is Busyエラーが返されます。
readpool.unified.auto-adjust-pool-sizeUnifyReadPool スレッド プールのサイズを自動的に調整するかどうかを決定します
coprocessor.split-region-on-tableテーブルごとにリージョンを分割できます
coprocessor.batch-split-limitバッチでのリージョン分割のしきい値
coprocessor.region-max-sizeリージョンの最大サイズ
coprocessor.region-split-size新しく分割されたリージョンのサイズ
coprocessor.region-max-keysリージョンで許可されるキーの最大数
coprocessor.region-split-keys新しく分割されたリージョン内のキーの数
pessimistic-txn.wait-for-lock-timeout悲観的トランザクションがロックを待つ最長時間
pessimistic-txn.wake-up-delay-duration悲観的トランザクションが起動されるまでの期間
pessimistic-txn.pipelinedパイプライン化された悲観的ロック処理を有効にするかどうかを決定します
pessimistic-txn.in-memoryメモリ内の悲観的ロックを有効にするかどうかを決定します
quota.foreground-cpu-timeTiKVフォアグラウンドが読み取りおよび書き込み要求を処理するために使用するCPUリソースのソフト制限
quota.foreground-write-bandwidthフォアグラウンドトランザクションがデータを書き込む帯域幅のソフト制限
quota.foreground-read-bandwidthフォアグラウンドトランザクションとコプロセッサーがデータを読み取る帯域幅のソフト制限
quota.background-cpu-timeTiKV バックグラウンドで読み取りおよび書き込み要求を処理するために使用する CPU リソースのソフト制限
quota.background-write-bandwidthバックグラウンドトランザクションがデータを書き込む帯域幅のソフト制限
quota.background-read-bandwidthバックグラウンドトランザクションとコプロセッサーがデータを読み取る帯域幅のソフト制限
quota.enable-auto-tuneクォータの自動調整を有効にするかどうか。この設定項目を有効にすると、TiKV インスタンスの負荷に基づいて、バックグラウンドリクエストのクォータが動的に調整されます。
quota.max-delay-duration単一の読み取りまたは書き込み要求がフォアグラウンドで処理されるまでに強制的に待機される最大時間
gc.ratio-thresholdリージョンGCがスキップされるしきい値(GCバージョン数/キー数)
gc.batch-keys1バッチで処理されるキーの数
gc.max-write-bytes-per-secRocksDBに1秒あたり書き込める最大バイト数
gc.enable-compaction-filter圧縮フィルタを有効にするかどうか
gc.compaction-filter-skip-version-check圧縮フィルタのクラスタバージョンチェックをスキップするかどうか(未リリース)
{db-name}.max-total-wal-size合計WALの最大サイズ
{db-name}.max-background-jobsRocksDBのバックグラウンドスレッドの数
{db-name}.max-background-flushesRocksDBのフラッシュスレッドの最大数
{db-name}.max-open-filesRocksDBが開くことができるファイルの総数
{db-name}.compaction-readahead-size圧縮時のサイズreadahead
{db-name}.bytes-per-syncファイルが非同期的に書き込まれている間に、OSがファイルをディスクに増分的に同期する速度
{db-name}.wal-bytes-per-syncWALファイルが書き込まれている間にOSがWALファイルをディスクに増分的に同期する速度
{db-name}.writable-file-max-buffer-sizeWritableFileWriteで使用される最大バッファサイズ
{db-name}.{cf-name}.block-cache-sizeブロックのキャッシュサイズ
{db-name}.{cf-name}.write-buffer-sizeメンバテーブルのサイズ
{db-name}.{cf-name}.max-write-buffer-numberメンバーテーブルの最大数
{db-name}.{cf-name}.max-bytes-for-level-baseベースレベル(L1)の最大バイト数
{db-name}.{cf-name}.target-file-size-baseベースレベルのターゲットファイルのサイズ
{db-name}.{cf-name}.level0-file-num-compaction-trigger圧縮をトリガーするL0のファイルの最大数
{db-name}.{cf-name}.level0-slowdown-writes-trigger書き込み停止を引き起こす L0 のファイルの最大数
{db-name}.{cf-name}.level0-stop-writes-trigger書き込みを完全にブロックするL0のファイルの最大数
{db-name}.{cf-name}.max-compaction-bytes圧縮ごとにディスクに書き込まれる最大バイト数
{db-name}.{cf-name}.max-bytes-for-level-multiplier各レイヤーのデフォルトの増幅倍数
{db-name}.{cf-name}.disable-auto-compactions自動圧縮を有効または無効にする
{db-name}.{cf-name}.soft-pending-compaction-bytes-limit保留中の圧縮バイトのソフト制限
{db-name}.{cf-name}.hard-pending-compaction-bytes-limit保留中の圧縮バイトのハード制限
{db-name}.{cf-name}.titan.blob-run-modeBLOBファイルの処理モード
{db-name}.{cf-name}.titan.min-blob-sizeTitan にデータが保存されるしきい値。このしきい値に達すると、データは Titan BLOB ファイルに保存されます。
{db-name}.{cf-name}.titan.blob-file-compressionTitan BLOBファイルで使用される圧縮アルゴリズム
{db-name}.{cf-name}.titan.discardable-ratioTitanデータファイル内のGC実行時の不要データ比率のしきい値。BLOBファイル内の不要データ比率がこのしきい値を超えると、Titan GCがトリガーされます。
server.grpc-memory-pool-quotagRPC で使用できるメモリサイズを制限します
server.max-grpc-send-msg-len送信できる gRPC メッセージの最大長を設定します
server.snap-io-max-bytes-per-secスナップショットを処理するときに許容される最大ディスク帯域幅を設定します
server.concurrent-send-snap-limit同時に送信されるスナップショットの最大数を設定します
server.concurrent-recv-snap-limit同時に受信するスナップショットの最大数を設定します
server.raft-msg-max-batch-size1つのgRPCメッセージに含まれるRaftメッセージの最大数を設定します
server.simplify-metricsサンプリング監視メトリックを簡素化するかどうかを制御します
storage.block-cache.capacity共有ブロックキャッシュのサイズ(v4.0.3以降でサポート)
storage.scheduler-worker-pool-sizeスケジューラスレッドプール内のスレッド数
import.num-threads復元またはインポート RPC 要求を処理するスレッドの数 (v8.1.2 以降では動的な変更がサポートされています)
backup.num-threadsバックアップ スレッドの数 (v4.0.3 以降でサポート)
split.qps-thresholdリージョンでload-base-split実行するしきい値。リージョンの読み取りリクエストのQPSが10秒連続でqps-threshold超える場合、このリージョンは分割されます。
split.byte-thresholdリージョンでload-base-split実行するためのしきい値。リージョンの読み取りリクエストのトラフィックが10秒間連続してbyte-threshold超える場合、このリージョンは分割されます。
split.region-cpu-overload-threshold-ratioリージョンでload-base-split実行するためのしきい値。リージョンの統合読み取りプールのCPU使用率が10秒連続でregion-cpu-overload-threshold-ratio超えた場合、このリージョンは分割されます。(v6.2.0以降でサポート)
split.split-balance-scoreload-base-splitというパラメータは、2つの分割されたリージョンの負荷が可能な限り均等になるようにします。値が小さいほど、負荷は均等になります。ただし、値が小さすぎると分割が失敗する可能性があります。
split.split-contained-scoreパラメータはload-base-splitです。値が小さいほど、リージョン分割後の地域間訪問数が少なくなります。
cdc.min-ts-interval解決されたTSが転送される時間間隔
cdc.old-value-cache-memory-quotaTiCDC 古い値のエントリが占有するメモリの上限
cdc.sink-memory-quotaTiCDCデータ変更イベントが占有するメモリの上限
cdc.incremental-scan-speed-limit履歴データの増分スキャン速度の上限
cdc.incremental-scan-concurrency履歴データの同時増分スキャンタスクの最大数

上記の表で、プレフィックスが{db-name}または{db-name}.{cf-name}パラメータはRocksDB関連の設定です。5のオプション値はdb-nameraftdb rocksdb

  • db-namerocksdb場合、 cf-nameのオプションの値はdefaultcfwritecflockcfraftcfです。
  • db-nameraftdbとき、 cf-nameの値はdefaultcfなります。

詳細なパラメータの説明についてはTiKVコンフィグレーションファイルを参照してください。

PD構成を動的に変更する

現在、PD はインスタンスごとに個別の設定をサポートしていません。すべての PD インスタンスは同じ設定を共有します。

次のステートメントを使用して PD 構成を変更できます。

set config pd `log.level`='info';

変更が成功した場合、 Query OKが返されます。

Query OK, 0 rows affected (0.01 sec)

設定項目が正常に変更された場合、その結果は設定ファイルではなくetcdに保存されます。以降の操作ではetcdの設定が優先されます。一部の設定項目の名前はTiDBの予約語と競合する場合があります。これらの設定項目は、バッククォート`で囲んでください。例: `schedule.leader-schedule-limit`

次の PD 構成項目は動的に変更できます。

コンフィグレーション項目説明
log.levelログレベル
cluster-versionクラスターバージョン
schedule.max-merge-region-sizeRegion Merge (MiB単位)のサイズ制限を制御します
schedule.max-merge-region-keysRegion Mergeキーの最大数を指定します
schedule.patrol-region-intervalreplicaCheckerのヘルス状態をチェックする頻度を決定します
schedule.split-merge-interval同じリージョンで分割および結合操作を実行する時間間隔を決定します
schedule.max-snapshot-count単一のストアが同時に送受信できるスナップショットの最大数を決定します
schedule.max-pending-peer-count単一ストア内の保留中のピアの最大数を決定します
schedule.max-store-down-timePDが切断されたストアを回復できないと判断するまでのダウンタイム
schedule.leader-schedule-policyLeaderのスケジュールポリシーを決定する
schedule.leader-schedule-limit同時に実行されるLeaderスケジュールタスクの数
schedule.region-schedule-limit同時に実行されるリージョンスケジュールタスクの数
schedule.replica-schedule-limit同時に実行されるレプリカスケジュールタスクの数
schedule.merge-schedule-limit同時に実行されるRegion Mergeスケジュールタスクの数
schedule.hot-region-schedule-limit同時に実行されるホットリージョンスケジューリングタスクの数
schedule.hot-region-cache-hits-thresholdリージョンがホットスポットとみなされる閾値を決定します
schedule.high-space-ratio店舗の収容能力が十分である閾値比率
schedule.low-space-ratio店舗の収容能力が不足する閾値比率
schedule.tolerant-size-ratiobalanceバッファサイズを制御します
schedule.enable-remove-down-replicaDownReplica自動的に削除する機能を有効にするかどうかを決定します
schedule.enable-replace-offline-replicaOfflineReplica移行する機能を有効にするかどうかを決定します
schedule.enable-make-up-replicaレプリカを自動的に補完する機能を有効にするかどうかを決定します
schedule.enable-remove-extra-replica余分なレプリカを削除する機能を有効にするかどうかを決定します
schedule.enable-location-replacement分離レベルチェックを有効にするかどうかを決定します
schedule.enable-cross-table-mergeテーブル間の結合を有効にするかどうかを決定します
schedule.enable-one-way-merge一方向のマージを有効にします。これにより、隣接する次のリージョンとのマージのみが可能になります。
replication.max-replicasレプリカの最大数を設定する
replication.location-labelsTiKVクラスタのトポロジ情報
replication.enable-placement-rules配置ルールを有効にする
replication.strictly-match-labelラベルチェックを有効にする
pd-server.use-region-storage独立したリージョンstorageを有効にする
pd-server.max-gap-reset-tsタイムスタンプをリセットする最大間隔を設定します(BR)
pd-server.key-typeクラスタキータイプを設定する
pd-server.metric-storageクラスターメトリックのstorageアドレスを設定します
pd-server.dashboard-addressダッシュボードのアドレスを設定する
replication-mode.replication-modeバックアップモードを設定します

詳細なパラメータの説明についてはPDコンフィグレーションファイルを参照してください。

TiDB 構成を動的に変更する

現在、TiDB構成の変更方法は、TiKVおよびPD構成の変更方法とは異なります。1 システム変数使用してTiDB構成を変更できます。

次の例は、 tidb_slow_log_threshold変数を使用してslow-threshold動的に変更する方法を示しています。

デフォルト値はslow-thresholdで 300 ミリ秒です。 tidb_slow_log_threshold使用すると 200 ミリ秒に設定できます。

set tidb_slow_log_threshold = 200;
Query OK, 0 rows affected (0.00 sec)
select @@tidb_slow_log_threshold;
+---------------------------+ | @@tidb_slow_log_threshold | +---------------------------+ | 200 | +---------------------------+ 1 row in set (0.00 sec)

次の TiDB 構成項目は動的に変更できます。

コンフィグレーション項目SQL変数説明
instance.tidb_enable_slow_logtidb_enable_slow_logスローログを有効にするかどうかを制御します
instance.tidb_slow_log_thresholdtidb_slow_log_thresholdスローログのしきい値を指定します
instance.tidb_expensive_query_time_thresholdtidb_expensive_query_time_threshold高価なクエリのしきい値を指定します
instance.tidb_enable_collect_execution_infotidb_enable_collect_execution_infoオペレータの実行情報を記録するかどうかを制御します
instance.tidb_record_plan_in_slow_logtidb_record_plan_in_slow_log実行計画をスローログに記録するかどうかを制御します
instance.tidb_force_prioritytidb_force_priorityこの TiDB インスタンスから送信されるステートメントの優先順位を指定します
instance.max_connectionsmax_connectionsこの TiDB インスタンスに許可される同時接続の最大数を指定します
instance.tidb_enable_ddltidb_enable_ddlこの TiDB インスタンスが DDL 所有者になれるかどうかを制御します
pessimistic-txn.constraint-check-in-place-pessimistictidb_constraint_check_in_place_pessimisticユニークインデックスのユニーク制約チェックを、このインデックスが次にロックを必要とするときまで延期するか、トランザクションがコミットされるときまで延期するかを制御します。

TiFlash構成を動的に変更する

現在、システム変数tidb_max_tiflash_threadsを使用してTiFlash構成max_threads変更できます。この変数は、 TiFlash が要求を実行するための最大同時実行性を指​​定します。

デフォルト値はtidb_max_tiflash_threads -1 、このシステム変数は無効であり、 TiFlash設定ファイルの設定に依存することを示します。 tidb_max_tiflash_threads使用すると、 max_threadsから 10 に設定できます。

set tidb_max_tiflash_threads = 10;
Query OK, 0 rows affected (0.00 sec)
select @@tidb_max_tiflash_threads;
+----------------------------+ | @@tidb_max_tiflash_threads | +----------------------------+ | 10 | +----------------------------+ 1 row in set (0.00 sec)

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