コンフィグレーションを動的に変更する
このドキュメントでは、クラスター構成を動的に変更する方法について説明します。
クラスタコンポーネントを再起動することなく、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実行して対応する設定項目も変更する必要があります。そうしないと、upgradeやreloadなどの操作によって変更内容が上書きされてしまいます。設定項目の変更方法の詳細については、 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インスタンスにアクセスできない場合は、復旧後にこれらのインスタンスを変更してください。
設定項目の変更に成功した場合、その結果は設定ファイルに保存され、以降の操作に反映されます。一部の設定項目の名前は、 limitやkeyなど、TiDBの予約語と競合する場合があります。これらの設定項目は、バッククォート`で囲んでください。例: `raftstore.raft-log-gc-size-limit` 。
次の TiKV 構成項目は動的に変更できます。
上記の表で、プレフィックスが{db-name}または{db-name}.{cf-name}パラメータはRocksDB関連の設定です。5のオプション値はdb-nameとraftdb rocksdb 。
db-nameがrocksdb場合、cf-nameのオプションの値はdefaultcf、writecf、lockcf、raftcfです。db-nameがraftdbとき、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 構成項目は動的に変更できます。
詳細なパラメータの説明については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 構成項目は動的に変更できます。
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)