# TiDB 集群参数的在线修改

__*TiDB 集群配置在线修改*__
__*TiDB 集群参数在线修改*__

+ 在线修改 TiKV 配置
  + 修改全部 TiKV 实例配置:
    + `set config tikv `split.qps-threshold`=1000`
 
  + 修改单个 TiKV 实例配置:  
    + `set config "127.0.0.1:20180" `split.qps-threshold`=1000`
  
+ 在线修改 PD 配置
  + `set config pd `log.level`='info'`

-------------------------------------------------------------
注意:在线修改 TiKV 配置项后,同时会自动修改 TiKV 的配置文件。但还需要使用 tiup edit-config 命令来修改对应的配置项,否则 upgrade 和 reload 等运维操作会将在线修改配置后的结果覆盖。修改配置的操作请参考:使用 TiUP 修改配置。执行 tiup edit-config 后不需要执行 tiup reload 操作。

执行 SQL 语句 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)

在批量修改时如果有错误发生,会以 warning 的形式返回:
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,需要等到恢复后再次进行修改。

针对 TiKV 可在线修改的配置项,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的配置为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 limit、key 等,对于此类配置项,需要用反引号 ` 包裹起来,如 `raftstore.raft-log-gc-size-limit`。

在线修改 PD 配置

PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的配置项:
set config pd `log.level`='info'

设置成功会返回 Query OK:
Query OK, 0 rows affected (0.01 sec)

针对 PD 可在线修改的配置项,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的配置为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ` 包裹此类配置项,例如 `schedule.leader-schedule-limit`。

支持配置项列表可以参考:https://docs.pingcap.com/zh/tidb/stable/dynamic-config