オンラインでConfiguration / コンフィグレーションを変更する
このドキュメントでは、クラスタ構成をオンラインで変更する方法について説明します。
ノート:
この機能は実験的です。この機能を実稼働環境で使用することはお勧めしません。
クラスタコンポーネントを再起動せずに、SQLステートメントを使用してコンポーネント(TiDB、TiKV、およびPDを含む)の構成をオンラインで更新できます。現在、TiDBインスタンスの構成を変更する方法は、他のコンポーネント(TiKVやPDなど)の構成を変更する方法とは異なります。
一般的な操作
このセクションでは、構成をオンラインで変更する一般的な操作について説明します。
インスタンス構成のビュー
クラスタのすべてのインスタンスの構成を表示するには、 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)
バッチ変更は原子性を保証するものではありません。変更は、一部のインスタンスでは成功し、他のインスタンスでは失敗する場合があります。 set tikv key=valを使用してTiKVクラスタ全体の構成を変更すると、一部のインスタンスで変更が失敗する場合があります。 show warningsを使用して結果を確認できます。
一部の変更が失敗した場合は、対応するステートメントを再実行するか、失敗した各インスタンスを変更する必要があります。ネットワークの問題やマシンの障害が原因で一部のTiKVインスタンスにアクセスできない場合は、回復後にこれらのインスタンスを変更してください。
構成アイテムが正常に変更されると、結果は構成ファイルに保持され、後続の操作で優先されます。一部の構成アイテムの名前は、 limitやkeyなどのTiDB予約語と競合する可能性があります。これらの構成項目については、バッククォート`を使用して囲みます。たとえば、 `raftstore.raft-log-gc-size-limit` 。
次のTiKV構成アイテムはオンラインで変更できます。
上記の表で、プレフィックスが{db-name}または{db-name}.{cf-name}のパラメーターは、RocksDBに関連する構成です。 db-nameのオプション値はrocksdbとraftdbです。
db-nameがrocksdbの場合、cf-nameのオプション値はdefaultcf、writecflockcfraftcf。db-nameがraftdbの場合、cf-nameの値はdefaultcfになります。
パラメータの詳細については、 TiKVConfiguration / コンフィグレーションファイルを参照してください。
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構成アイテムはオンラインで変更できます。
パラメータの詳細については、 PDConfiguration / コンフィグレーションファイルを参照してください。
TiDB構成をオンラインで変更する
現在、TiDB構成を変更する方法は、TiKVおよびPD構成を変更する方法とは異なります。 システム変数を使用して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構成アイテムはオンラインで変更できます。
|Configuration / コンフィグレーション項目| SQL変数|説明| | :--- | :--- | | mem-quota-query | tidb_mem_quota_query |クエリのメモリ使用制限| | log.enable-slow-log | tidb_enable_slow_log |スローログを有効にするかどうか| | log.slow-threshold | tidb_slow_log_threshold |遅いログのしきい値| | log.expensive-threshold | tidb_expensive_query_time_threshold |高価なクエリのしきい値|