From 2c2f15a20d0f421719e9faf6cb9dc075b5371fbb Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 6 Mar 2020 12:39:51 +0800 Subject: [PATCH 01/56] add a guide about how to use dynamic config Signed-off-by: Ryan Leung --- reference/configuration/dynamic-config.md | 248 ++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 reference/configuration/dynamic-config.md diff --git a/reference/configuration/dynamic-config.md b/reference/configuration/dynamic-config.md new file mode 100644 index 000000000000..7aab8fc249c6 --- /dev/null +++ b/reference/configuration/dynamic-config.md @@ -0,0 +1,248 @@ +# 动态配置变更使用文档 + +动态配置变更主要是支持包括 TiDB,TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 + +## 开启动态配置变更 + +4.0 版本默认开启该参数,可通过修改 TiDB,TiKV,PD 配置文件中的 `enable-dynamic-config = false` 关闭该功能。 + +## 常用操作 + +目前可通过 pd-ctl 对各组件(TiDB,TiKV,PD)进行修改和查看。 + +### 查看组件实例 + +可通过 `component ids ` 查看组件实例。其中 `component` 为组件类型,目前支持 `tidb`,`tikv`,`pd` 三种类型。 + +示例如下: + +```bash +>> component ids tikv +[ + "127.0.0.1:20160", + "127.0.0.1:20161", + "127.0.0.1:20162" +] +``` + +### 修改配置 + +#### 修改全局配置 + +可通过 `component set ` 进行设置,其中 `component` 为组件类型,含义同上。`key` 为参数名称,`value` 为参数值。 + +示例如下: + +```bash +>> component set tikv gc.batch-keys 1024 +``` + +上述命令会将所有 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 + +#### 修改实例配置 + +可通过 `component set ` 进行设置,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。 + +示例如下: + +```bash +>> component set 127.0.0.1:20160 gc.batch-keys 1024 +``` + +上述命令仅将 `127.0.0.1:20160` 这个 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 + +### 查看配置 + +可通过 `component show ` 查看具体实例的配置。`component ID` 为实例的 IP 地址加端口,含义同上。 + +示例如下: + +```bash +>> component show 127.0.0.1:20160 +``` + +```bash +dynamic-config = true +log-file = "" +log-level = "info" +log-rotation-size = "300MiB" +log-rotation-timespan = "1d" +panic-when-unexpected-key-or-data = false +refresh-config-interval = "30s" + +[coprocessor] + batch-split-limit = 10 + region-max-keys = 1440000 + region-max-size = "144MiB" + region-split-keys = 960000 + region-split-size = "96MiB" + split-region-on-table = false + +[gc] + batch-keys = 512 + max-write-bytes-per-sec = "0KiB" + ratio-threshold = 1.1 + +[import] + num-threads = 8 + stream-channel-window = 128 + +[metric] + address = "" + interval = "15s" + job = "tikv" + +[pd] + endpoints = ["127.0.0.1:2379"] + retry-interval = "300ms" + retry-log-every = 10 + retry-max-count = 9223372036854775807 + +[pessimistic-txn] + enabled = true + wait-for-lock-timeout = 1000 + wake-up-delay-duration = 20 +... +``` + +### 删除实例配置 + +可通过 `component delete ` 进行删除,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。主要用于下线节点后,将配置删除。通常该命令无需手动操作。 + +## 支持的参数列表 + +### TiDB + +| 参数 | 简介 | +| --- | --- | +| performance.max-procs | Go 使用最大线程数,动态修改可能引起系统抖动 | +| performance.max-memory | prepare plan 使用的最大内存 | +| performance.cross-join | 是否允许在没有等值条件时使用 Join (相当于做笛卡尔积) | +| performance.feedback-probability | 统计信息使用 feedback 方式搜集数据的比例 | +| performance.query-feedback-limit | 内存中缓存的 feedback 信息数 | +| performance.pseudo-estimate-ratio | 修改过的行数/表的总行数的比值,超过该值时系统会认为统计信息已经过期,会采用 pseudo 的统计信息 | +| performance.stmt-count-limit | TiDB 一个事务允许的最大语句条数限制 | +| performance.tcp-keep-alive | TiDB 在 TCP 层开启 keepalive | +| oom-action | 指定 TiDB 发生 out-of-memory 错误时的操作 | +| mem-quota-query | 单条 SQL 语句可以占用的最大内存阈值 | +| tikv-client.store-limit | Store 的调度限流阈值 | +| log.level | 日志等级 | +| log.slow-threshold| 输出慢日志的耗时阈值 | +| log.query-log-max-len | 最长的 SQL 输出长度 | +| log.expensive-threshold | 输出 expensive 操作的行数阈值 | +| check-mb4-value-in-utf8 | 开启检查 utf8mb4 字符的开关,如果开启此功能,字符集是 utf8,且在 utf8 插入 mb4 字符,系统将会报错 | +| enable-streaming | 开启 coprocessor 的 streaming 获取数据模式 | +| txn-local-latches.capacity | Hash 对应的 slot 数,会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降 | +| compatible-kill-query | 设置 KILL 语句的兼容性 | +| treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | +| opentracing.enable | 是否开启 opentracing 功能 | +| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | + +具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 + +### TiKV + +| 参数 | 简介 | +| --- | --- | +| refresh-config-interval | 尝试更新配置的时间间隔 | +| raftstore.sync-log | 数据、log 落盘是否 sync | +| raftstore.raft-entry-max-size | 单个日志最大大小 | +| raftstore.raft-log-gc-tick-interval | 删除 raft 日志的轮询任务调度间隔时间 | +| raftstore.raft-log-gc-threshold | 允许残余的 raft 日志个数,软限制 | +| raftstore.raft-log-gc-count-limit | 允许残余的 raft 日志个数,硬限制 | +| raftstore.raft-log-gc-size-limit | 允许残余的 raft 日志大小,硬限制 | +| raftstore.raft-entry-cache-life-time | 内存中日志 cache 允许的最长残留时间 | +| raftstore.raft-reject-transfer-leader-duration | 控制迁移 leader 到新加节点的最小时间 | +| raftstore.split-region-check-tick-interval | 检查 region 是否需要分裂的时间间隔 | +| raftstore.region-split-check-diff | 允许 region 数据超过指定大小的最大值 | +| raftstore.region-compact-check-interval | 检查是否需要人工触发 rocksdb compaction 的时间间隔 | +| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | +| raftstore.region-compact-min-tombstones | 触发 rocksdb compaction 需要的 tombstone 个数 | +| raftstore.region-compact-tombstones-percent | 触发 rocksdb compaction 需要的 tombstone 所占比例 | +| raftstore.pd-heartbeat-tick-interval | 触发 region 对 PD 心跳的时间间隔 | +| raftstore.pd-store-heartbeat-tick-interval | 触发 store 对 PD 心跳的时间间隔 | +| raftstore.snap-mgr-gc-tick-interval | 触发回收过期 snapshot 文件的时间间隔 | +| raftstore.snap-gc-timeout | snapshot 文件的最长保存时间 | +| raftstore.lock-cf-compact-interval | 触发对 lock CF compact 检查的时间间隔 | +| raftstore.lock-cf-compact-bytes-threshold | 触发对 lock CF 进行 compact 的大小 | +| raftstore.messages-per-tick | 每轮处理的消息最大个数 | +| raftstore.max-peer-down-duration | 副本允许的最长未响应时间 | +| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间 | +| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | +| raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | +| raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | +| raftstore.raft-store-max-leader-lease | region 主可信任期的最长时间 | +| raftstore.allow-remove-leader | 允许删除主开关 | +| raftstore.merge-check-tick-interval | 触发 merge 完成检查的时间间隔 | +| raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | +| raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | +| coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | +| coprocessor.batch-split-limit | 批量分裂 Region 的阈值 | +| coprocessor.region-max-size | Region 容量空间最大值 | +| coprocessor.region-split-size | 分裂后新 Region 的大小 | +| coprocessor.region-max-keys | Region 最多允许的 key 的个数 | +| coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | +| pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | +| pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | +| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数) +| gc.batch-keys | 一轮处理 key 的个数 | +| gc.max-write-bytes-per-sec | 一秒可写入 rocksdb 的最大字节数 | +| {db-name}.max-total-wal-size | WAL 总大小限制 | +| {db-name}.max-background-jobs | RocksDB 后台线程个数 | +| {db-name}.max-open-files | RocksDB 可以打开的文件总数 | +| {db-name}.compaction-readahead-size | Compaction 时候 readahead 的大小 | +| {db-name}.bytes-per-sync | 异步 Sync 限速速率 | +| {db-name}.wal-bytes-per-sync | WAL Sync 限速速率 | +| {db-name}.writable-file-max-buffer-size | WritableFileWrite 所使用的最大的 buffer 大小 | +| {db-name}.{cf-name}.block-cache-size | block cache size 大小 | +| {db-name}.{cf-name}.write-buffer-size | memtable 大小 | +| {db-name}.{cf-name}.max-write-buffer-number | 最大 memtable 个数 | +| {db-name}.{cf-name}.max-bytes-for-level-base | base level (L1) 最大字节数 | +| {db-name}.{cf-name}.target-file-size-base | base level 的目标文件大小 | +| {db-name}.{cf-name}.level0-file-num-compaction-trigger | 触发 compaction 的 L0 文件最大个数 | +| {db-name}.{cf-name}.level0-slowdown-writes-trigger | 触发 write stall 的 L0 文件最大个数 | +| {db-name}.{cf-name}.level0-stop-writes-trigger | 完全阻停写入的 L0 文件最大个数 | +| {db-name}.{cf-name}.max-compaction-bytes | 一次 compaction 最大写入字节数 | +| {db-name}.{cf-name}.max-bytes-for-level-multiplier | 每一层的默认放大倍数 | +| {db-name}.{cf-name}.disable-auto-compactions | 自动 compaction 的开关 | +| {db-name}.{cf-name}.soft-pending-compaction-bytes-limit | pending compaction bytes 的软限制 | +| {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | +| {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | + +上述前缀为 {db-name} 或 {db-name}.{cf-name} 的参数是 rocksdb 相关的配置 +`db-name` 的取值可以为是 `rocksdb`, `raftdb` +当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` +当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` + +具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md)。 + +### PD + +| 参数 | 简介 | +| --- | --- | +| log.level| 日志级别 | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-keys | 控制 Region Merge 的 keyCount 上限 | +| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | +| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | +| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | +| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | +| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | +| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | +| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | +| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | +| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | +| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | +| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | +| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | +| schedule.disable-remove-down-replica | 用于关闭自动删除 DownReplica 的特性 | +| schedule.disable-replace-offline-replica | 用于关闭迁移 OfflineReplica 的特性 | +| schedule.disable-make-up-replica | 用于关闭补充副本的特性 | +| schedule.disable-remove-extra-replica | 用于关闭删除多余副本的特性 | +| schedule.disable-location-replacement | 用于关闭隔离级别检查 | +| replication.max-replicas | 用于设置副本的数量 | +| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | +| label-property | 标签相关的配置项 | +| pd-server.use-region-storage | 开启独立的 region 存储 | + +具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md)。 From 6350048e5711d62c13c1913426531f22fcd14530 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 6 Mar 2020 15:10:17 +0800 Subject: [PATCH 02/56] add the document to TOC Signed-off-by: Ryan Leung --- TOC.md | 1 + reference/configuration/dynamic-config.md => dynamic-config.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) rename reference/configuration/dynamic-config.md => dynamic-config.md (99%) diff --git a/TOC.md b/TOC.md index 887814b1e5a7..c405eb5d9f37 100644 --- a/TOC.md +++ b/TOC.md @@ -245,6 +245,7 @@ + tikv-server - [配置参数](/command-line-flags-for-tikv-configuration.md) - [配置文件描述](/tikv-configuration-file.md) + - [动态配置变更](/dynamic-config.md) + 安全 - [与 MySQL 的安全特性差异](/security-compatibility-with-mysql.md) - [TiDB 数据库权限管理](/privilege-management.md) diff --git a/reference/configuration/dynamic-config.md b/dynamic-config.md similarity index 99% rename from reference/configuration/dynamic-config.md rename to dynamic-config.md index 7aab8fc249c6..8a4a19270000 100644 --- a/reference/configuration/dynamic-config.md +++ b/dynamic-config.md @@ -136,7 +136,7 @@ refresh-config-interval = "30s" | compatible-kill-query | 设置 KILL 语句的兼容性 | | treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | | opentracing.enable | 是否开启 opentracing 功能 | -| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | +| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | 具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 From fe280e4fd5332ae9620ad194f3abc2a81c7aeebf Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 13 May 2020 13:19:40 +0800 Subject: [PATCH 03/56] rewrite the dynamic config guide Signed-off-by: Ryan Leung --- dynamic-config.md | 270 +++++++++++++++++++--------------------------- 1 file changed, 108 insertions(+), 162 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 8a4a19270000..9a31dc310145 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,144 +1,121 @@ -# 动态配置变更使用文档 - -动态配置变更主要是支持包括 TiDB,TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 - -## 开启动态配置变更 - -4.0 版本默认开启该参数,可通过修改 TiDB,TiKV,PD 配置文件中的 `enable-dynamic-config = false` 关闭该功能。 +--- +title: 动态配置变更使用文档 +category: reference +--- -## 常用操作 +# 动态配置变更使用文档 -目前可通过 pd-ctl 对各组件(TiDB,TiKV,PD)进行修改和查看。 +动态配置变更主要是通过利用 SQL 对包括 TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 +动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对于的 SQL 变量。 -### 查看组件实例 +## 常用的操作 -可通过 `component ids ` 查看组件实例。其中 `component` 为组件类型,目前支持 `tidb`,`tikv`,`pd` 三种类型。 +### 查看实例配置 -示例如下: +可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: -```bash ->> component ids tikv -[ - "127.0.0.1:20160", - "127.0.0.1:20161", - "127.0.0.1:20162" -] ``` +mysql> mysql> show config; ++------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Type | Instance | Name | Value | ++------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| tidb | 127.0.0.1:4001 | advertise-address | 127.0.0.1 | +| tidb | 127.0.0.1:4001 | alter-primary-key | false | +| 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 | -### 修改配置 - -#### 修改全局配置 - -可通过 `component set ` 进行设置,其中 `component` 为组件类型,含义同上。`key` 为参数名称,`value` 为参数值。 +... +``` -示例如下: +还可以根据对于的字段进行过滤,如: -```bash ->> component set tikv gc.batch-keys 1024 +``` +mysql> show config where type='tidb' +mysql> show config where instance in (...) +mysql> show config where name like '%log%' +mysql> show config where type='tikv' and name='log-level' ``` -上述命令会将所有 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 - -#### 修改实例配置 +### 修改实例配置 -可通过 `component set ` 进行设置,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。 +SQL `set config` 可以结合实例地址和类型来修改配置,如: +set config tikv log.level="info" +set config "127.0.0.1:2379" log.level="info" -示例如下: +设置成功会返回 `Query OK`: -```bash ->> component set 127.0.0.1:20160 gc.batch-keys 1024 +``` +mysql> set config '127.0.0.1:2379' log.level='info'; +Query OK, 0 rows affected (0.01 sec) ``` -上述命令仅将 `127.0.0.1:20160` 这个 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 - -### 查看配置 - -可通过 `component show ` 查看具体实例的配置。`component ID` 为实例的 IP 地址加端口,含义同上。 - -示例如下: +在批量修改时如果有错误发生,会以 warning 的形式返回: -```bash ->> component show 127.0.0.1:20160 ``` - -```bash -dynamic-config = true -log-file = "" -log-level = "info" -log-rotation-size = "300MiB" -log-rotation-timespan = "1d" -panic-when-unexpected-key-or-data = false -refresh-config-interval = "30s" - -[coprocessor] - batch-split-limit = 10 - region-max-keys = 1440000 - region-max-size = "144MiB" - region-split-keys = 960000 - region-split-size = "96MiB" - split-region-on-table = false - -[gc] - batch-keys = 512 - max-write-bytes-per-sec = "0KiB" - ratio-threshold = 1.1 - -[import] - num-threads = 8 - stream-channel-window = 128 - -[metric] - address = "" - interval = "15s" - job = "tikv" - -[pd] - endpoints = ["127.0.0.1:2379"] - retry-interval = "300ms" - retry-log-every = 10 - retry-max-count = 9223372036854775807 - -[pessimistic-txn] - enabled = true - wait-for-lock-timeout = 1000 - wake-up-delay-duration = 20 -... +mysql> set config tikv log-level='warn'; +Query OK, 0 rows affected, 1 warning (0.04 sec) + +mysql> 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 change" | ++---------+------+---------------------------------------------------------------------------------------------------------------+ +1 row in set (0.00 sec) ``` -### 删除实例配置 +使用 `set config` 时,需要注意: +为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,修改 TiDB 动态配置是会返回错误,如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制; +某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 \` 包裹起来,如 `tikv-client`.`store-limit`; -可通过 `component delete ` 进行删除,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。主要用于下线节点后,将配置删除。通常该命令无需手动操作。 +## 支持参数列表 -## 支持的参数列表 - -### TiDB +### PD | 参数 | 简介 | | --- | --- | -| performance.max-procs | Go 使用最大线程数,动态修改可能引起系统抖动 | -| performance.max-memory | prepare plan 使用的最大内存 | -| performance.cross-join | 是否允许在没有等值条件时使用 Join (相当于做笛卡尔积) | -| performance.feedback-probability | 统计信息使用 feedback 方式搜集数据的比例 | -| performance.query-feedback-limit | 内存中缓存的 feedback 信息数 | -| performance.pseudo-estimate-ratio | 修改过的行数/表的总行数的比值,超过该值时系统会认为统计信息已经过期,会采用 pseudo 的统计信息 | -| performance.stmt-count-limit | TiDB 一个事务允许的最大语句条数限制 | -| performance.tcp-keep-alive | TiDB 在 TCP 层开启 keepalive | -| oom-action | 指定 TiDB 发生 out-of-memory 错误时的操作 | -| mem-quota-query | 单条 SQL 语句可以占用的最大内存阈值 | -| tikv-client.store-limit | Store 的调度限流阈值 | -| log.level | 日志等级 | -| log.slow-threshold| 输出慢日志的耗时阈值 | -| log.query-log-max-len | 最长的 SQL 输出长度 | -| log.expensive-threshold | 输出 expensive 操作的行数阈值 | -| check-mb4-value-in-utf8 | 开启检查 utf8mb4 字符的开关,如果开启此功能,字符集是 utf8,且在 utf8 插入 mb4 字符,系统将会报错 | -| enable-streaming | 开启 coprocessor 的 streaming 获取数据模式 | -| txn-local-latches.capacity | Hash 对应的 slot 数,会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降 | -| compatible-kill-query | 设置 KILL 语句的兼容性 | -| treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | -| opentracing.enable | 是否开启 opentracing 功能 | -| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | - -具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 +| log.level| 日志级别 | +| cluster-version | 集群的版本 | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | +| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | +| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | +| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | +| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | +| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | +| schedule.leader-schedule-policy | 用于控制 leader 调度的策略 | +| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | +| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | +| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | +| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | +| schedule.hot-region-schedule-limit | 可以控制同时进行的热点调度的任务个数 | +| schedule.hot-region-cache-hits-threshold | 用于设置 Region 被视为热点的阈值 | +| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | +| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | +| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | +| schedule.enable-remove-down-replica | 用于开启自动删除 DownReplica 的特性 | +| schedule.enable-replace-offline-replica | 用于开启迁移 OfflineReplica 的特性 | +| schedule.enable-make-up-replica | 用于开启补充副本的特性 | +| schedule.enable-remove-extra-replica | 用于开启删除多余副本的特性 | +| schedule.enable-location-replacement | 用于开启隔离级别检查 | +| schedule.enable-cross-table-merge | 用于开启跨表 Merge | +| schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | +| replication.max-replicas | 用于设置副本的数量 | +| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | +| replication.enable-placement-rules | 开启 placement rules | +| replication.strictly-match-label | 开启 label 检查 | +| pd-server.use-region-storage | 开启独立的 region 存储 | +| pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| +| pd-server.key-type| 用于设置集群 key 的类型 | +| pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | +| pd-server.dashboard-address | 用于设置 dashbaord 的地址 | +| replication-mode.replication-mode | 备份的模式 | + +具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md) ### TiKV @@ -147,19 +124,19 @@ refresh-config-interval = "30s" | refresh-config-interval | 尝试更新配置的时间间隔 | | raftstore.sync-log | 数据、log 落盘是否 sync | | raftstore.raft-entry-max-size | 单个日志最大大小 | -| raftstore.raft-log-gc-tick-interval | 删除 raft 日志的轮询任务调度间隔时间 | -| raftstore.raft-log-gc-threshold | 允许残余的 raft 日志个数,软限制 | -| raftstore.raft-log-gc-count-limit | 允许残余的 raft 日志个数,硬限制 | -| raftstore.raft-log-gc-size-limit | 允许残余的 raft 日志大小,硬限制 | +| raftstore.raft-log-gc-tick-interval | 删除 Raft 日志的轮询任务调度间隔时间 | +| raftstore.raft-log-gc-threshold | 允许残余的 Raft 日志个数,软限制 | +| raftstore.raft-log-gc-count-limit | 允许残余的 Raft 日志个数,硬限制 | +| raftstore.raft-log-gc-size-limit | 允许残余的 Raft 日志大小,硬限制 | | raftstore.raft-entry-cache-life-time | 内存中日志 cache 允许的最长残留时间 | | raftstore.raft-reject-transfer-leader-duration | 控制迁移 leader 到新加节点的最小时间 | -| raftstore.split-region-check-tick-interval | 检查 region 是否需要分裂的时间间隔 | -| raftstore.region-split-check-diff | 允许 region 数据超过指定大小的最大值 | -| raftstore.region-compact-check-interval | 检查是否需要人工触发 rocksdb compaction 的时间间隔 | +| raftstore.split-region-check-tick-interval | 检查 Region 是否需要分裂的时间间隔 | +| raftstore.region-split-check-diff | 允许 Region 数据超过指定大小的最大值 | +| raftstore.region-compact-check-interval | 检查是否需要人工触发 RocksDB compaction 的时间间隔 | | raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | -| raftstore.region-compact-min-tombstones | 触发 rocksdb compaction 需要的 tombstone 个数 | -| raftstore.region-compact-tombstones-percent | 触发 rocksdb compaction 需要的 tombstone 所占比例 | -| raftstore.pd-heartbeat-tick-interval | 触发 region 对 PD 心跳的时间间隔 | +| raftstore.region-compact-min-tombstones | 触发 RocksDB compaction 需要的 tombstone 个数 | +| raftstore.region-compact-tombstones-percent | 触发 RocksDB compaction 需要的 tombstone 所占比例 | +| raftstore.pd-heartbeat-tick-interval | 触发 Region 对 PD 心跳的时间间隔 | | raftstore.pd-store-heartbeat-tick-interval | 触发 store 对 PD 心跳的时间间隔 | | raftstore.snap-mgr-gc-tick-interval | 触发回收过期 snapshot 文件的时间间隔 | | raftstore.snap-gc-timeout | snapshot 文件的最长保存时间 | @@ -171,9 +148,9 @@ refresh-config-interval = "30s" | raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | | raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | | raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | -| raftstore.raft-store-max-leader-lease | region 主可信任期的最长时间 | +| raftstore.raft-store-max-leader-lease | Region 主可信任期的最长时间 | | raftstore.allow-remove-leader | 允许删除主开关 | -| raftstore.merge-check-tick-interval | 触发 merge 完成检查的时间间隔 | +| raftstore.merge-check-tick-interval | 触发 Merge 完成检查的时间间隔 | | raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | | raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | | coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | @@ -184,9 +161,9 @@ refresh-config-interval = "30s" | coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | | pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | | pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | -| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数) +| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数)| | gc.batch-keys | 一轮处理 key 的个数 | -| gc.max-write-bytes-per-sec | 一秒可写入 rocksdb 的最大字节数 | +| gc.max-write-bytes-per-sec | 一秒可写入 RocksDB 的最大字节数 | | {db-name}.max-total-wal-size | WAL 总大小限制 | | {db-name}.max-background-jobs | RocksDB 后台线程个数 | | {db-name}.max-open-files | RocksDB 可以打开的文件总数 | @@ -209,40 +186,9 @@ refresh-config-interval = "30s" | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 {db-name} 或 {db-name}.{cf-name} 的参数是 rocksdb 相关的配置 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置 `db-name` 的取值可以为是 `rocksdb`, `raftdb` 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` -具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md)。 - -### PD - -| 参数 | 简介 | -| --- | --- | -| log.level| 日志级别 | -| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | -| schedule.max-merge-region-keys | 控制 Region Merge 的 keyCount 上限 | -| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | -| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | -| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | -| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | -| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | -| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | -| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | -| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | -| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | -| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | -| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | -| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | -| schedule.disable-remove-down-replica | 用于关闭自动删除 DownReplica 的特性 | -| schedule.disable-replace-offline-replica | 用于关闭迁移 OfflineReplica 的特性 | -| schedule.disable-make-up-replica | 用于关闭补充副本的特性 | -| schedule.disable-remove-extra-replica | 用于关闭删除多余副本的特性 | -| schedule.disable-location-replacement | 用于关闭隔离级别检查 | -| replication.max-replicas | 用于设置副本的数量 | -| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | -| label-property | 标签相关的配置项 | -| pd-server.use-region-storage | 开启独立的 region 存储 | - -具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md)。 +具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) From 458a10438566d8aa14218ab2752122b90277d8ed Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 20 May 2020 16:29:28 +0800 Subject: [PATCH 04/56] address comments Signed-off-by: Ryan Leung --- dynamic-config.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 9a31dc310145..da10b2d75bbc 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -15,7 +15,7 @@ category: reference 可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: ``` -mysql> mysql> show config; +mysql> show config; +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -43,8 +43,11 @@ mysql> show config where type='tikv' and name='log-level' ### 修改实例配置 SQL `set config` 可以结合实例地址和类型来修改配置,如: + +``` set config tikv log.level="info" set config "127.0.0.1:2379" log.level="info" +``` 设置成功会返回 `Query OK`: @@ -63,14 +66,14 @@ mysql> 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 change" | +| Warning | 1105 | bad request to http://127.0.0.1:20180/config: fail to update, error: "config log-level can not be change" | +---------+------+---------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) ``` -使用 `set config` 时,需要注意: -为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,修改 TiDB 动态配置是会返回错误,如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制; -某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 \` 包裹起来,如 `tikv-client`.`store-limit`; +> **注意:** +> 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 +> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 `tikv-client`.`store-limit`; ## 支持参数列表 @@ -80,7 +83,7 @@ mysql> show warnings; | --- | --- | | log.level| 日志级别 | | cluster-version | 集群的版本 | -| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 MB) | | schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | | schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | | schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | @@ -186,9 +189,9 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置 -`db-name` 的取值可以为是 `rocksdb`, `raftdb` -当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` -当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`, `raftdb`。 + +- 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; +- 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) From 4cbcf079c6031e71e33911f49f6301fb0f4500f5 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 20 May 2020 17:17:01 +0800 Subject: [PATCH 05/56] Update dynamic-config.md Co-authored-by: NingLin-P --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index da10b2d75bbc..1dc22b429859 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -73,7 +73,7 @@ mysql> show warnings; > **注意:** > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 -> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 `tikv-client`.`store-limit`; +> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; ## 支持参数列表 From 79f1d0712fff2f43ebfcc45128fd77103dc529d7 Mon Sep 17 00:00:00 2001 From: Ran Date: Wed, 20 May 2020 17:50:34 +0800 Subject: [PATCH 06/56] Apply suggestions from code review --- dynamic-config.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 1dc22b429859..140c26dc0303 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,14 +1,15 @@ --- -title: 动态配置变更使用文档 +title: 动态配置变更 category: reference --- -# 动态配置变更使用文档 +# 动态配置变更 -动态配置变更主要是通过利用 SQL 对包括 TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 -动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对于的 SQL 变量。 +动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 -## 常用的操作 +动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对应的 SQL 变量。 + +## 常用操作 ### 查看实例配置 @@ -31,7 +32,7 @@ mysql> show config; ... ``` -还可以根据对于的字段进行过滤,如: +还可以根据对应的字段进行过滤,如: ``` mysql> show config where type='tidb' @@ -42,7 +43,7 @@ mysql> show config where type='tikv' and name='log-level' ### 修改实例配置 -SQL `set config` 可以结合实例地址和类型来修改配置,如: +执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: ``` set config tikv log.level="info" @@ -72,7 +73,9 @@ mysql> show warnings; ``` > **注意:** +> > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 +> > 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; ## 支持参数列表 @@ -189,7 +192,7 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`, `raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`,`raftdb`。 - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 From 23301483545c437eda51a77da25b278e9909ead4 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 21 May 2020 16:31:06 +0800 Subject: [PATCH 07/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynamic-config.md b/dynamic-config.md index 140c26dc0303..4f7b0f08bd5c 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -77,6 +77,8 @@ mysql> show warnings; > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 > > 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; +> +> 批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 ## 支持参数列表 From 4e560d1a251f6baa9209c8c60f436250abe2c29e Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Mon, 25 May 2020 19:32:24 +0800 Subject: [PATCH 08/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 4f7b0f08bd5c..a287c0a9ba62 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -5,7 +5,11 @@ category: reference # 动态配置变更 -动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 +> **注意:** +> +> 该功能目前是实验性阶段,不建议在生产环境中使用。 + +动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对应的 SQL 变量。 From c34d304fe6f6965494919e391a68296dd9d265e6 Mon Sep 17 00:00:00 2001 From: Ran Date: Mon, 25 May 2020 20:45:34 +0800 Subject: [PATCH 09/56] Apply suggestions from code review --- dynamic-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index a287c0a9ba62..100f4aea261a 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -124,10 +124,10 @@ mysql> show warnings; | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| | pd-server.key-type| 用于设置集群 key 的类型 | | pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | -| pd-server.dashboard-address | 用于设置 dashbaord 的地址 | +| pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md) +具体参数意义可参考 [PD 配置文件描述](https://pingcap.com/docs-cn/stable/pd-configuration-file/) ### TiKV From e38e335aa1d97d1141becb3db66e32149a7c0ceb Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:47:54 +0800 Subject: [PATCH 10/56] Update dynamic-config.md Co-authored-by: Ran --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 100f4aea261a..c1f2f0b00fbb 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -203,4 +203,4 @@ mysql> show warnings; - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 -具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) +具体参数意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) From 9220251fd0a4d18411d41cf5e09412248742a678 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:48:07 +0800 Subject: [PATCH 11/56] Update dynamic-config.md Co-authored-by: Ran --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index c1f2f0b00fbb..ecde591e279a 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -127,7 +127,7 @@ mysql> show warnings; | pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体参数意义可参考 [PD 配置文件描述](https://pingcap.com/docs-cn/stable/pd-configuration-file/) +具体参数意义可参考 [PD 配置文件描述](/pd-configuration-file.md) ### TiKV From 744416e47586b5956b22f0239387501ca210baec Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:59:13 +0800 Subject: [PATCH 12/56] Update dynamic-config.md --- dynamic-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index ecde591e279a..fb13c1f44e31 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -156,8 +156,8 @@ mysql> show warnings; | raftstore.lock-cf-compact-bytes-threshold | 触发对 lock CF 进行 compact 的大小 | | raftstore.messages-per-tick | 每轮处理的消息最大个数 | | raftstore.max-peer-down-duration | 副本允许的最长未响应时间 | -| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间 | -| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | +| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间,超过将会向 PD 校验自己是否已经被删除 | +| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间,超过将视为异常,标记在 metrics 和日志中 | | raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | | raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | | raftstore.raft-store-max-leader-lease | Region 主可信任期的最长时间 | From 44cd6de3404dcf76821aa6eed2b09bb2df1e7bf7 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:19 +0800 Subject: [PATCH 13/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index fb13c1f44e31..e50f40d18db1 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -118,7 +118,7 @@ mysql> show warnings; | schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | | replication.max-replicas | 用于设置副本的数量 | | replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | -| replication.enable-placement-rules | 开启 placement rules | +| replication.enable-placement-rules | 开启 Placement Rules | | replication.strictly-match-label | 开启 label 检查 | | pd-server.use-region-storage | 开启独立的 region 存储 | | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| From 9286295e4edb6d9d2fcb76f8805bdbd5270d2455 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:29 +0800 Subject: [PATCH 14/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index e50f40d18db1..0bfcb5dd210f 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -145,7 +145,7 @@ mysql> show warnings; | raftstore.split-region-check-tick-interval | 检查 Region 是否需要分裂的时间间隔 | | raftstore.region-split-check-diff | 允许 Region 数据超过指定大小的最大值 | | raftstore.region-compact-check-interval | 检查是否需要人工触发 RocksDB compaction 的时间间隔 | -| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | +| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 Region 个数 | | raftstore.region-compact-min-tombstones | 触发 RocksDB compaction 需要的 tombstone 个数 | | raftstore.region-compact-tombstones-percent | 触发 RocksDB compaction 需要的 tombstone 所占比例 | | raftstore.pd-heartbeat-tick-interval | 触发 Region 对 PD 心跳的时间间隔 | From 5b95e18682818daaf79ddd11ee4eedbb8b97c684 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:38 +0800 Subject: [PATCH 15/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 0bfcb5dd210f..62347ac1b75f 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -120,7 +120,7 @@ mysql> show warnings; | replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | | replication.enable-placement-rules | 开启 Placement Rules | | replication.strictly-match-label | 开启 label 检查 | -| pd-server.use-region-storage | 开启独立的 region 存储 | +| pd-server.use-region-storage | 开启独立的 Region 存储 | | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| | pd-server.key-type| 用于设置集群 key 的类型 | | pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | From 9af027b65d3cb912ab2a0f6d699331f4290cbc72 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 13:00:09 +0800 Subject: [PATCH 16/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 62347ac1b75f..63c3e2d85173 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -198,7 +198,7 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`,`raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可为 `rocksdb`,`raftdb`。 - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 From 9dce105d99b0400bf72d05b2f0598a903e6034e0 Mon Sep 17 00:00:00 2001 From: yikeke Date: Thu, 28 May 2020 11:06:45 +0800 Subject: [PATCH 17/56] refine format --- dynamic-config.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 63c3e2d85173..91b08e1b0a67 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -19,8 +19,11 @@ category: reference 可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: +```sql +show config; +``` + ``` -mysql> show config; +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -38,36 +41,43 @@ mysql> show config; 还可以根据对应的字段进行过滤,如: -``` -mysql> show config where type='tidb' -mysql> show config where instance in (...) -mysql> show config where name like '%log%' -mysql> show config where type='tikv' and name='log-level' +```sql +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' ``` ### 修改实例配置 执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: -``` +```sql set config tikv log.level="info" set config "127.0.0.1:2379" log.level="info" ``` 设置成功会返回 `Query OK`: -``` -mysql> set config '127.0.0.1:2379' log.level='info'; +```sql Query OK, 0 rows affected (0.01 sec) ``` 在批量修改时如果有错误发生,会以 warning 的形式返回: +```sql +set config tikv log-level='warn'; +``` + ``` -mysql> set config tikv log-level='warn'; Query OK, 0 rows affected, 1 warning (0.04 sec) +``` -mysql> show warnings; +```sql +show warnings; +``` + +``` +---------+------+---------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------+ From 2fed1642a9487e8f163ea8627b857ef3793fa2c2 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Thu, 28 May 2020 16:26:35 +0800 Subject: [PATCH 18/56] add TOC --- TOC.md | 1 + dynamic-config.md | 18 ++++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/TOC.md b/TOC.md index 39174e885134..e5a8d0a57b74 100644 --- a/TOC.md +++ b/TOC.md @@ -66,6 +66,7 @@ + [TiCDC 运维操作及任务管理](/ticdc/manage-ticdc.md) + [TiUP 常用运维操作](/maintain-tidb-using-tiup.md) + [TiFlash 常用运维操作](/tiflash/maintain-tiflash.md) + + [动态配置变更](/dynamic-config.md) + 监控与告警 + [监控框架概述](/tidb-monitoring-framework.md) + [监控 API](/tidb-monitoring-api.md) diff --git a/dynamic-config.md b/dynamic-config.md index 91b08e1b0a67..a7b6b815ac8d 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -23,7 +23,7 @@ category: reference show config; ``` -``` +```sql +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -69,7 +69,7 @@ Query OK, 0 rows affected (0.01 sec) set config tikv log-level='warn'; ``` -``` +```sql Query OK, 0 rows affected, 1 warning (0.04 sec) ``` @@ -77,7 +77,7 @@ Query OK, 0 rows affected, 1 warning (0.04 sec) show warnings; ``` -``` +```sql +---------+------+---------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------+ @@ -86,13 +86,11 @@ show warnings; 1 row in set (0.00 sec) ``` -> **注意:** -> -> 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 -> -> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; -> -> 批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 +为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 + +某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; + +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 ## 支持参数列表 From d85ef51a3086bf5b4bd72e858cb278583824485f Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 28 May 2020 16:48:55 +0800 Subject: [PATCH 19/56] Update dynamic-config.md --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index a7b6b815ac8d..d4eb689cbbfd 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -50,7 +50,7 @@ show config where type='tikv' and name='log-level' ### 修改实例配置 -执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: +执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: ```sql set config tikv log.level="info" From edab2e3ea63436b7e116f9555253c83bf7948295 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 28 May 2020 17:12:48 +0800 Subject: [PATCH 20/56] address comments Signed-off-by: Ryan Leung --- dynamic-config.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index d4eb689cbbfd..2737e472817d 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -52,8 +52,15 @@ show config where type='tikv' and name='log-level' 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: +修改全部 TiKV 实例参数: + ```sql set config tikv log.level="info" +``` + +修改单个 TiKV 实例参数: + +```sql set config "127.0.0.1:2379" log.level="info" ``` @@ -90,7 +97,9 @@ show warnings; 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; -批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 + +针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。而针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。 ## 支持参数列表 From 8bda367ca0c81642ba31a0f827aed93d121b5675 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Thu, 28 May 2020 17:18:37 +0800 Subject: [PATCH 21/56] Update dynamic-config.md --- dynamic-config.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 2737e472817d..6be5f18a343e 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -97,7 +97,9 @@ show warnings; 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; -批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 TiKV 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 + +如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。而针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。 From adf7a623bd319406a4874ef60044f36b8a8b7379 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 6 Mar 2020 12:39:51 +0800 Subject: [PATCH 22/56] add a guide about how to use dynamic config Signed-off-by: Ryan Leung --- reference/configuration/dynamic-config.md | 248 ++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 reference/configuration/dynamic-config.md diff --git a/reference/configuration/dynamic-config.md b/reference/configuration/dynamic-config.md new file mode 100644 index 000000000000..7aab8fc249c6 --- /dev/null +++ b/reference/configuration/dynamic-config.md @@ -0,0 +1,248 @@ +# 动态配置变更使用文档 + +动态配置变更主要是支持包括 TiDB,TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 + +## 开启动态配置变更 + +4.0 版本默认开启该参数,可通过修改 TiDB,TiKV,PD 配置文件中的 `enable-dynamic-config = false` 关闭该功能。 + +## 常用操作 + +目前可通过 pd-ctl 对各组件(TiDB,TiKV,PD)进行修改和查看。 + +### 查看组件实例 + +可通过 `component ids ` 查看组件实例。其中 `component` 为组件类型,目前支持 `tidb`,`tikv`,`pd` 三种类型。 + +示例如下: + +```bash +>> component ids tikv +[ + "127.0.0.1:20160", + "127.0.0.1:20161", + "127.0.0.1:20162" +] +``` + +### 修改配置 + +#### 修改全局配置 + +可通过 `component set ` 进行设置,其中 `component` 为组件类型,含义同上。`key` 为参数名称,`value` 为参数值。 + +示例如下: + +```bash +>> component set tikv gc.batch-keys 1024 +``` + +上述命令会将所有 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 + +#### 修改实例配置 + +可通过 `component set ` 进行设置,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。 + +示例如下: + +```bash +>> component set 127.0.0.1:20160 gc.batch-keys 1024 +``` + +上述命令仅将 `127.0.0.1:20160` 这个 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 + +### 查看配置 + +可通过 `component show ` 查看具体实例的配置。`component ID` 为实例的 IP 地址加端口,含义同上。 + +示例如下: + +```bash +>> component show 127.0.0.1:20160 +``` + +```bash +dynamic-config = true +log-file = "" +log-level = "info" +log-rotation-size = "300MiB" +log-rotation-timespan = "1d" +panic-when-unexpected-key-or-data = false +refresh-config-interval = "30s" + +[coprocessor] + batch-split-limit = 10 + region-max-keys = 1440000 + region-max-size = "144MiB" + region-split-keys = 960000 + region-split-size = "96MiB" + split-region-on-table = false + +[gc] + batch-keys = 512 + max-write-bytes-per-sec = "0KiB" + ratio-threshold = 1.1 + +[import] + num-threads = 8 + stream-channel-window = 128 + +[metric] + address = "" + interval = "15s" + job = "tikv" + +[pd] + endpoints = ["127.0.0.1:2379"] + retry-interval = "300ms" + retry-log-every = 10 + retry-max-count = 9223372036854775807 + +[pessimistic-txn] + enabled = true + wait-for-lock-timeout = 1000 + wake-up-delay-duration = 20 +... +``` + +### 删除实例配置 + +可通过 `component delete ` 进行删除,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。主要用于下线节点后,将配置删除。通常该命令无需手动操作。 + +## 支持的参数列表 + +### TiDB + +| 参数 | 简介 | +| --- | --- | +| performance.max-procs | Go 使用最大线程数,动态修改可能引起系统抖动 | +| performance.max-memory | prepare plan 使用的最大内存 | +| performance.cross-join | 是否允许在没有等值条件时使用 Join (相当于做笛卡尔积) | +| performance.feedback-probability | 统计信息使用 feedback 方式搜集数据的比例 | +| performance.query-feedback-limit | 内存中缓存的 feedback 信息数 | +| performance.pseudo-estimate-ratio | 修改过的行数/表的总行数的比值,超过该值时系统会认为统计信息已经过期,会采用 pseudo 的统计信息 | +| performance.stmt-count-limit | TiDB 一个事务允许的最大语句条数限制 | +| performance.tcp-keep-alive | TiDB 在 TCP 层开启 keepalive | +| oom-action | 指定 TiDB 发生 out-of-memory 错误时的操作 | +| mem-quota-query | 单条 SQL 语句可以占用的最大内存阈值 | +| tikv-client.store-limit | Store 的调度限流阈值 | +| log.level | 日志等级 | +| log.slow-threshold| 输出慢日志的耗时阈值 | +| log.query-log-max-len | 最长的 SQL 输出长度 | +| log.expensive-threshold | 输出 expensive 操作的行数阈值 | +| check-mb4-value-in-utf8 | 开启检查 utf8mb4 字符的开关,如果开启此功能,字符集是 utf8,且在 utf8 插入 mb4 字符,系统将会报错 | +| enable-streaming | 开启 coprocessor 的 streaming 获取数据模式 | +| txn-local-latches.capacity | Hash 对应的 slot 数,会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降 | +| compatible-kill-query | 设置 KILL 语句的兼容性 | +| treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | +| opentracing.enable | 是否开启 opentracing 功能 | +| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | + +具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 + +### TiKV + +| 参数 | 简介 | +| --- | --- | +| refresh-config-interval | 尝试更新配置的时间间隔 | +| raftstore.sync-log | 数据、log 落盘是否 sync | +| raftstore.raft-entry-max-size | 单个日志最大大小 | +| raftstore.raft-log-gc-tick-interval | 删除 raft 日志的轮询任务调度间隔时间 | +| raftstore.raft-log-gc-threshold | 允许残余的 raft 日志个数,软限制 | +| raftstore.raft-log-gc-count-limit | 允许残余的 raft 日志个数,硬限制 | +| raftstore.raft-log-gc-size-limit | 允许残余的 raft 日志大小,硬限制 | +| raftstore.raft-entry-cache-life-time | 内存中日志 cache 允许的最长残留时间 | +| raftstore.raft-reject-transfer-leader-duration | 控制迁移 leader 到新加节点的最小时间 | +| raftstore.split-region-check-tick-interval | 检查 region 是否需要分裂的时间间隔 | +| raftstore.region-split-check-diff | 允许 region 数据超过指定大小的最大值 | +| raftstore.region-compact-check-interval | 检查是否需要人工触发 rocksdb compaction 的时间间隔 | +| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | +| raftstore.region-compact-min-tombstones | 触发 rocksdb compaction 需要的 tombstone 个数 | +| raftstore.region-compact-tombstones-percent | 触发 rocksdb compaction 需要的 tombstone 所占比例 | +| raftstore.pd-heartbeat-tick-interval | 触发 region 对 PD 心跳的时间间隔 | +| raftstore.pd-store-heartbeat-tick-interval | 触发 store 对 PD 心跳的时间间隔 | +| raftstore.snap-mgr-gc-tick-interval | 触发回收过期 snapshot 文件的时间间隔 | +| raftstore.snap-gc-timeout | snapshot 文件的最长保存时间 | +| raftstore.lock-cf-compact-interval | 触发对 lock CF compact 检查的时间间隔 | +| raftstore.lock-cf-compact-bytes-threshold | 触发对 lock CF 进行 compact 的大小 | +| raftstore.messages-per-tick | 每轮处理的消息最大个数 | +| raftstore.max-peer-down-duration | 副本允许的最长未响应时间 | +| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间 | +| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | +| raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | +| raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | +| raftstore.raft-store-max-leader-lease | region 主可信任期的最长时间 | +| raftstore.allow-remove-leader | 允许删除主开关 | +| raftstore.merge-check-tick-interval | 触发 merge 完成检查的时间间隔 | +| raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | +| raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | +| coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | +| coprocessor.batch-split-limit | 批量分裂 Region 的阈值 | +| coprocessor.region-max-size | Region 容量空间最大值 | +| coprocessor.region-split-size | 分裂后新 Region 的大小 | +| coprocessor.region-max-keys | Region 最多允许的 key 的个数 | +| coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | +| pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | +| pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | +| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数) +| gc.batch-keys | 一轮处理 key 的个数 | +| gc.max-write-bytes-per-sec | 一秒可写入 rocksdb 的最大字节数 | +| {db-name}.max-total-wal-size | WAL 总大小限制 | +| {db-name}.max-background-jobs | RocksDB 后台线程个数 | +| {db-name}.max-open-files | RocksDB 可以打开的文件总数 | +| {db-name}.compaction-readahead-size | Compaction 时候 readahead 的大小 | +| {db-name}.bytes-per-sync | 异步 Sync 限速速率 | +| {db-name}.wal-bytes-per-sync | WAL Sync 限速速率 | +| {db-name}.writable-file-max-buffer-size | WritableFileWrite 所使用的最大的 buffer 大小 | +| {db-name}.{cf-name}.block-cache-size | block cache size 大小 | +| {db-name}.{cf-name}.write-buffer-size | memtable 大小 | +| {db-name}.{cf-name}.max-write-buffer-number | 最大 memtable 个数 | +| {db-name}.{cf-name}.max-bytes-for-level-base | base level (L1) 最大字节数 | +| {db-name}.{cf-name}.target-file-size-base | base level 的目标文件大小 | +| {db-name}.{cf-name}.level0-file-num-compaction-trigger | 触发 compaction 的 L0 文件最大个数 | +| {db-name}.{cf-name}.level0-slowdown-writes-trigger | 触发 write stall 的 L0 文件最大个数 | +| {db-name}.{cf-name}.level0-stop-writes-trigger | 完全阻停写入的 L0 文件最大个数 | +| {db-name}.{cf-name}.max-compaction-bytes | 一次 compaction 最大写入字节数 | +| {db-name}.{cf-name}.max-bytes-for-level-multiplier | 每一层的默认放大倍数 | +| {db-name}.{cf-name}.disable-auto-compactions | 自动 compaction 的开关 | +| {db-name}.{cf-name}.soft-pending-compaction-bytes-limit | pending compaction bytes 的软限制 | +| {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | +| {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | + +上述前缀为 {db-name} 或 {db-name}.{cf-name} 的参数是 rocksdb 相关的配置 +`db-name` 的取值可以为是 `rocksdb`, `raftdb` +当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` +当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` + +具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md)。 + +### PD + +| 参数 | 简介 | +| --- | --- | +| log.level| 日志级别 | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-keys | 控制 Region Merge 的 keyCount 上限 | +| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | +| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | +| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | +| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | +| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | +| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | +| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | +| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | +| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | +| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | +| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | +| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | +| schedule.disable-remove-down-replica | 用于关闭自动删除 DownReplica 的特性 | +| schedule.disable-replace-offline-replica | 用于关闭迁移 OfflineReplica 的特性 | +| schedule.disable-make-up-replica | 用于关闭补充副本的特性 | +| schedule.disable-remove-extra-replica | 用于关闭删除多余副本的特性 | +| schedule.disable-location-replacement | 用于关闭隔离级别检查 | +| replication.max-replicas | 用于设置副本的数量 | +| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | +| label-property | 标签相关的配置项 | +| pd-server.use-region-storage | 开启独立的 region 存储 | + +具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md)。 From c10e042700d8afd1e296843576d5fd073d4f9d5b Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 6 Mar 2020 15:10:17 +0800 Subject: [PATCH 23/56] add the document to TOC Signed-off-by: Ryan Leung --- reference/configuration/dynamic-config.md => dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename reference/configuration/dynamic-config.md => dynamic-config.md (99%) diff --git a/reference/configuration/dynamic-config.md b/dynamic-config.md similarity index 99% rename from reference/configuration/dynamic-config.md rename to dynamic-config.md index 7aab8fc249c6..8a4a19270000 100644 --- a/reference/configuration/dynamic-config.md +++ b/dynamic-config.md @@ -136,7 +136,7 @@ refresh-config-interval = "30s" | compatible-kill-query | 设置 KILL 语句的兼容性 | | treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | | opentracing.enable | 是否开启 opentracing 功能 | -| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | +| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | 具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 From a193f10ce3967e31446e7c83d249c4259bc074d8 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 13 May 2020 13:19:40 +0800 Subject: [PATCH 24/56] rewrite the dynamic config guide Signed-off-by: Ryan Leung --- dynamic-config.md | 270 +++++++++++++++++++--------------------------- 1 file changed, 108 insertions(+), 162 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 8a4a19270000..9a31dc310145 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,144 +1,121 @@ -# 动态配置变更使用文档 - -动态配置变更主要是支持包括 TiDB,TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 - -## 开启动态配置变更 - -4.0 版本默认开启该参数,可通过修改 TiDB,TiKV,PD 配置文件中的 `enable-dynamic-config = false` 关闭该功能。 +--- +title: 动态配置变更使用文档 +category: reference +--- -## 常用操作 +# 动态配置变更使用文档 -目前可通过 pd-ctl 对各组件(TiDB,TiKV,PD)进行修改和查看。 +动态配置变更主要是通过利用 SQL 对包括 TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 +动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对于的 SQL 变量。 -### 查看组件实例 +## 常用的操作 -可通过 `component ids ` 查看组件实例。其中 `component` 为组件类型,目前支持 `tidb`,`tikv`,`pd` 三种类型。 +### 查看实例配置 -示例如下: +可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: -```bash ->> component ids tikv -[ - "127.0.0.1:20160", - "127.0.0.1:20161", - "127.0.0.1:20162" -] ``` +mysql> mysql> show config; ++------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| Type | Instance | Name | Value | ++------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| tidb | 127.0.0.1:4001 | advertise-address | 127.0.0.1 | +| tidb | 127.0.0.1:4001 | alter-primary-key | false | +| 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 | -### 修改配置 - -#### 修改全局配置 - -可通过 `component set ` 进行设置,其中 `component` 为组件类型,含义同上。`key` 为参数名称,`value` 为参数值。 +... +``` -示例如下: +还可以根据对于的字段进行过滤,如: -```bash ->> component set tikv gc.batch-keys 1024 +``` +mysql> show config where type='tidb' +mysql> show config where instance in (...) +mysql> show config where name like '%log%' +mysql> show config where type='tikv' and name='log-level' ``` -上述命令会将所有 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 - -#### 修改实例配置 +### 修改实例配置 -可通过 `component set ` 进行设置,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。 +SQL `set config` 可以结合实例地址和类型来修改配置,如: +set config tikv log.level="info" +set config "127.0.0.1:2379" log.level="info" -示例如下: +设置成功会返回 `Query OK`: -```bash ->> component set 127.0.0.1:20160 gc.batch-keys 1024 +``` +mysql> set config '127.0.0.1:2379' log.level='info'; +Query OK, 0 rows affected (0.01 sec) ``` -上述命令仅将 `127.0.0.1:20160` 这个 TiKV 实例的 GC 的参数 `batch-keys` 设置为 1024。 - -### 查看配置 - -可通过 `component show ` 查看具体实例的配置。`component ID` 为实例的 IP 地址加端口,含义同上。 - -示例如下: +在批量修改时如果有错误发生,会以 warning 的形式返回: -```bash ->> component show 127.0.0.1:20160 ``` - -```bash -dynamic-config = true -log-file = "" -log-level = "info" -log-rotation-size = "300MiB" -log-rotation-timespan = "1d" -panic-when-unexpected-key-or-data = false -refresh-config-interval = "30s" - -[coprocessor] - batch-split-limit = 10 - region-max-keys = 1440000 - region-max-size = "144MiB" - region-split-keys = 960000 - region-split-size = "96MiB" - split-region-on-table = false - -[gc] - batch-keys = 512 - max-write-bytes-per-sec = "0KiB" - ratio-threshold = 1.1 - -[import] - num-threads = 8 - stream-channel-window = 128 - -[metric] - address = "" - interval = "15s" - job = "tikv" - -[pd] - endpoints = ["127.0.0.1:2379"] - retry-interval = "300ms" - retry-log-every = 10 - retry-max-count = 9223372036854775807 - -[pessimistic-txn] - enabled = true - wait-for-lock-timeout = 1000 - wake-up-delay-duration = 20 -... +mysql> set config tikv log-level='warn'; +Query OK, 0 rows affected, 1 warning (0.04 sec) + +mysql> 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 change" | ++---------+------+---------------------------------------------------------------------------------------------------------------+ +1 row in set (0.00 sec) ``` -### 删除实例配置 +使用 `set config` 时,需要注意: +为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,修改 TiDB 动态配置是会返回错误,如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制; +某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 \` 包裹起来,如 `tikv-client`.`store-limit`; -可通过 `component delete ` 进行删除,其中 `component ID` 为实例的 IP 地址加端口,如 `127.0.0.1:20160`。可通过使用 `ids` 命令进行查看。主要用于下线节点后,将配置删除。通常该命令无需手动操作。 +## 支持参数列表 -## 支持的参数列表 - -### TiDB +### PD | 参数 | 简介 | | --- | --- | -| performance.max-procs | Go 使用最大线程数,动态修改可能引起系统抖动 | -| performance.max-memory | prepare plan 使用的最大内存 | -| performance.cross-join | 是否允许在没有等值条件时使用 Join (相当于做笛卡尔积) | -| performance.feedback-probability | 统计信息使用 feedback 方式搜集数据的比例 | -| performance.query-feedback-limit | 内存中缓存的 feedback 信息数 | -| performance.pseudo-estimate-ratio | 修改过的行数/表的总行数的比值,超过该值时系统会认为统计信息已经过期,会采用 pseudo 的统计信息 | -| performance.stmt-count-limit | TiDB 一个事务允许的最大语句条数限制 | -| performance.tcp-keep-alive | TiDB 在 TCP 层开启 keepalive | -| oom-action | 指定 TiDB 发生 out-of-memory 错误时的操作 | -| mem-quota-query | 单条 SQL 语句可以占用的最大内存阈值 | -| tikv-client.store-limit | Store 的调度限流阈值 | -| log.level | 日志等级 | -| log.slow-threshold| 输出慢日志的耗时阈值 | -| log.query-log-max-len | 最长的 SQL 输出长度 | -| log.expensive-threshold | 输出 expensive 操作的行数阈值 | -| check-mb4-value-in-utf8 | 开启检查 utf8mb4 字符的开关,如果开启此功能,字符集是 utf8,且在 utf8 插入 mb4 字符,系统将会报错 | -| enable-streaming | 开启 coprocessor 的 streaming 获取数据模式 | -| txn-local-latches.capacity | Hash 对应的 slot 数,会自动向上调整为 2 的指数倍。每个 slot 占 32 Bytes 内存。当写入数据的范围比较广时(如导数据),设置过小会导致变慢,性能下降 | -| compatible-kill-query | 设置 KILL 语句的兼容性 | -| treat-old-version-utf8-as-utf8mb4 | 将旧表中的 utf8 字符集当成 utf8mb4的开关 | -| opentracing.enable | 是否开启 opentracing 功能 | -| prepared-plan-cache.enable | 是否开启 prepare 语句的 plan cache | - -具体参数意义可参考 [TiDB 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tidb-server/configuration-file.md)。 +| log.level| 日志级别 | +| cluster-version | 集群的版本 | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | +| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | +| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | +| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | +| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | +| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | +| schedule.leader-schedule-policy | 用于控制 leader 调度的策略 | +| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | +| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | +| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | +| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | +| schedule.hot-region-schedule-limit | 可以控制同时进行的热点调度的任务个数 | +| schedule.hot-region-cache-hits-threshold | 用于设置 Region 被视为热点的阈值 | +| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | +| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | +| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | +| schedule.enable-remove-down-replica | 用于开启自动删除 DownReplica 的特性 | +| schedule.enable-replace-offline-replica | 用于开启迁移 OfflineReplica 的特性 | +| schedule.enable-make-up-replica | 用于开启补充副本的特性 | +| schedule.enable-remove-extra-replica | 用于开启删除多余副本的特性 | +| schedule.enable-location-replacement | 用于开启隔离级别检查 | +| schedule.enable-cross-table-merge | 用于开启跨表 Merge | +| schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | +| replication.max-replicas | 用于设置副本的数量 | +| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | +| replication.enable-placement-rules | 开启 placement rules | +| replication.strictly-match-label | 开启 label 检查 | +| pd-server.use-region-storage | 开启独立的 region 存储 | +| pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| +| pd-server.key-type| 用于设置集群 key 的类型 | +| pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | +| pd-server.dashboard-address | 用于设置 dashbaord 的地址 | +| replication-mode.replication-mode | 备份的模式 | + +具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md) ### TiKV @@ -147,19 +124,19 @@ refresh-config-interval = "30s" | refresh-config-interval | 尝试更新配置的时间间隔 | | raftstore.sync-log | 数据、log 落盘是否 sync | | raftstore.raft-entry-max-size | 单个日志最大大小 | -| raftstore.raft-log-gc-tick-interval | 删除 raft 日志的轮询任务调度间隔时间 | -| raftstore.raft-log-gc-threshold | 允许残余的 raft 日志个数,软限制 | -| raftstore.raft-log-gc-count-limit | 允许残余的 raft 日志个数,硬限制 | -| raftstore.raft-log-gc-size-limit | 允许残余的 raft 日志大小,硬限制 | +| raftstore.raft-log-gc-tick-interval | 删除 Raft 日志的轮询任务调度间隔时间 | +| raftstore.raft-log-gc-threshold | 允许残余的 Raft 日志个数,软限制 | +| raftstore.raft-log-gc-count-limit | 允许残余的 Raft 日志个数,硬限制 | +| raftstore.raft-log-gc-size-limit | 允许残余的 Raft 日志大小,硬限制 | | raftstore.raft-entry-cache-life-time | 内存中日志 cache 允许的最长残留时间 | | raftstore.raft-reject-transfer-leader-duration | 控制迁移 leader 到新加节点的最小时间 | -| raftstore.split-region-check-tick-interval | 检查 region 是否需要分裂的时间间隔 | -| raftstore.region-split-check-diff | 允许 region 数据超过指定大小的最大值 | -| raftstore.region-compact-check-interval | 检查是否需要人工触发 rocksdb compaction 的时间间隔 | +| raftstore.split-region-check-tick-interval | 检查 Region 是否需要分裂的时间间隔 | +| raftstore.region-split-check-diff | 允许 Region 数据超过指定大小的最大值 | +| raftstore.region-compact-check-interval | 检查是否需要人工触发 RocksDB compaction 的时间间隔 | | raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | -| raftstore.region-compact-min-tombstones | 触发 rocksdb compaction 需要的 tombstone 个数 | -| raftstore.region-compact-tombstones-percent | 触发 rocksdb compaction 需要的 tombstone 所占比例 | -| raftstore.pd-heartbeat-tick-interval | 触发 region 对 PD 心跳的时间间隔 | +| raftstore.region-compact-min-tombstones | 触发 RocksDB compaction 需要的 tombstone 个数 | +| raftstore.region-compact-tombstones-percent | 触发 RocksDB compaction 需要的 tombstone 所占比例 | +| raftstore.pd-heartbeat-tick-interval | 触发 Region 对 PD 心跳的时间间隔 | | raftstore.pd-store-heartbeat-tick-interval | 触发 store 对 PD 心跳的时间间隔 | | raftstore.snap-mgr-gc-tick-interval | 触发回收过期 snapshot 文件的时间间隔 | | raftstore.snap-gc-timeout | snapshot 文件的最长保存时间 | @@ -171,9 +148,9 @@ refresh-config-interval = "30s" | raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | | raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | | raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | -| raftstore.raft-store-max-leader-lease | region 主可信任期的最长时间 | +| raftstore.raft-store-max-leader-lease | Region 主可信任期的最长时间 | | raftstore.allow-remove-leader | 允许删除主开关 | -| raftstore.merge-check-tick-interval | 触发 merge 完成检查的时间间隔 | +| raftstore.merge-check-tick-interval | 触发 Merge 完成检查的时间间隔 | | raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | | raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | | coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | @@ -184,9 +161,9 @@ refresh-config-interval = "30s" | coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | | pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | | pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | -| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数) +| gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数)| | gc.batch-keys | 一轮处理 key 的个数 | -| gc.max-write-bytes-per-sec | 一秒可写入 rocksdb 的最大字节数 | +| gc.max-write-bytes-per-sec | 一秒可写入 RocksDB 的最大字节数 | | {db-name}.max-total-wal-size | WAL 总大小限制 | | {db-name}.max-background-jobs | RocksDB 后台线程个数 | | {db-name}.max-open-files | RocksDB 可以打开的文件总数 | @@ -209,40 +186,9 @@ refresh-config-interval = "30s" | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 {db-name} 或 {db-name}.{cf-name} 的参数是 rocksdb 相关的配置 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置 `db-name` 的取值可以为是 `rocksdb`, `raftdb` 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` -具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md)。 - -### PD - -| 参数 | 简介 | -| --- | --- | -| log.level| 日志级别 | -| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | -| schedule.max-merge-region-keys | 控制 Region Merge 的 keyCount 上限 | -| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | -| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | -| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | -| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | -| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | -| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | -| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | -| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | -| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | -| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | -| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | -| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | -| schedule.disable-remove-down-replica | 用于关闭自动删除 DownReplica 的特性 | -| schedule.disable-replace-offline-replica | 用于关闭迁移 OfflineReplica 的特性 | -| schedule.disable-make-up-replica | 用于关闭补充副本的特性 | -| schedule.disable-remove-extra-replica | 用于关闭删除多余副本的特性 | -| schedule.disable-location-replacement | 用于关闭隔离级别检查 | -| replication.max-replicas | 用于设置副本的数量 | -| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | -| label-property | 标签相关的配置项 | -| pd-server.use-region-storage | 开启独立的 region 存储 | - -具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md)。 +具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) From 5ceb80e63e01a29b51b397a7e52ecb35c697b3c4 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 20 May 2020 16:29:28 +0800 Subject: [PATCH 25/56] address comments Signed-off-by: Ryan Leung --- dynamic-config.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 9a31dc310145..da10b2d75bbc 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -15,7 +15,7 @@ category: reference 可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: ``` -mysql> mysql> show config; +mysql> show config; +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -43,8 +43,11 @@ mysql> show config where type='tikv' and name='log-level' ### 修改实例配置 SQL `set config` 可以结合实例地址和类型来修改配置,如: + +``` set config tikv log.level="info" set config "127.0.0.1:2379" log.level="info" +``` 设置成功会返回 `Query OK`: @@ -63,14 +66,14 @@ mysql> 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 change" | +| Warning | 1105 | bad request to http://127.0.0.1:20180/config: fail to update, error: "config log-level can not be change" | +---------+------+---------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) ``` -使用 `set config` 时,需要注意: -为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,修改 TiDB 动态配置是会返回错误,如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制; -某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 \` 包裹起来,如 `tikv-client`.`store-limit`; +> **注意:** +> 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 +> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 `tikv-client`.`store-limit`; ## 支持参数列表 @@ -80,7 +83,7 @@ mysql> show warnings; | --- | --- | | log.level| 日志级别 | | cluster-version | 集群的版本 | -| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 M) | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 MB) | | schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | | schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | | schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | @@ -186,9 +189,9 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置 -`db-name` 的取值可以为是 `rocksdb`, `raftdb` -当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf` -当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf` +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`, `raftdb`。 + +- 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; +- 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) From 1c4726e045e85825e715c11697557cc86adf6caf Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Wed, 20 May 2020 17:17:01 +0800 Subject: [PATCH 26/56] Update dynamic-config.md Co-authored-by: NingLin-P --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index da10b2d75bbc..1dc22b429859 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -73,7 +73,7 @@ mysql> show warnings; > **注意:** > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 -> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 `tikv-client`.`store-limit`; +> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; ## 支持参数列表 From de9884660a9906cd3ece14899a6dee269296f603 Mon Sep 17 00:00:00 2001 From: Ran Date: Wed, 20 May 2020 17:50:34 +0800 Subject: [PATCH 27/56] Apply suggestions from code review --- dynamic-config.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 1dc22b429859..140c26dc0303 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,14 +1,15 @@ --- -title: 动态配置变更使用文档 +title: 动态配置变更 category: reference --- -# 动态配置变更使用文档 +# 动态配置变更 -动态配置变更主要是通过利用 SQL 对包括 TiKV,PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 -动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对于的 SQL 变量。 +动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 -## 常用的操作 +动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对应的 SQL 变量。 + +## 常用操作 ### 查看实例配置 @@ -31,7 +32,7 @@ mysql> show config; ... ``` -还可以根据对于的字段进行过滤,如: +还可以根据对应的字段进行过滤,如: ``` mysql> show config where type='tidb' @@ -42,7 +43,7 @@ mysql> show config where type='tikv' and name='log-level' ### 修改实例配置 -SQL `set config` 可以结合实例地址和类型来修改配置,如: +执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: ``` set config tikv log.level="info" @@ -72,7 +73,9 @@ mysql> show warnings; ``` > **注意:** +> > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 +> > 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; ## 支持参数列表 @@ -189,7 +192,7 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`, `raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`,`raftdb`。 - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 From 0f64bca36f3877eceee230eb764e995287352e70 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 21 May 2020 16:31:06 +0800 Subject: [PATCH 28/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynamic-config.md b/dynamic-config.md index 140c26dc0303..4f7b0f08bd5c 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -77,6 +77,8 @@ mysql> show warnings; > 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 > > 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; +> +> 批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 ## 支持参数列表 From 2f06ec846ab35f14bdb8e8da4bf3a25e9ef2273a Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Mon, 25 May 2020 19:32:24 +0800 Subject: [PATCH 29/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 4f7b0f08bd5c..a287c0a9ba62 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -5,7 +5,11 @@ category: reference # 动态配置变更 -动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。动态配置变更在 4.0 版本属于实验性特性。 +> **注意:** +> +> 该功能目前是实验性阶段,不建议在生产环境中使用。 + +动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对应的 SQL 变量。 From d161ef964393143aa132da1d8d1d24b8e5d5a83e Mon Sep 17 00:00:00 2001 From: Ran Date: Mon, 25 May 2020 20:45:34 +0800 Subject: [PATCH 30/56] Apply suggestions from code review --- dynamic-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index a287c0a9ba62..100f4aea261a 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -124,10 +124,10 @@ mysql> show warnings; | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| | pd-server.key-type| 用于设置集群 key 的类型 | | pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | -| pd-server.dashboard-address | 用于设置 dashbaord 的地址 | +| pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体参数意义可参考 [PD 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/pd-server/configuration-file.md) +具体参数意义可参考 [PD 配置文件描述](https://pingcap.com/docs-cn/stable/pd-configuration-file/) ### TiKV From 2340aa3629c5492608082099d501ede79ac0debf Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:47:54 +0800 Subject: [PATCH 31/56] Update dynamic-config.md Co-authored-by: Ran --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 100f4aea261a..c1f2f0b00fbb 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -203,4 +203,4 @@ mysql> show warnings; - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 -具体参数意义可参考 [TiKV 配置文件描述](https://github.com/pingcap/docs-cn/blob/master/reference/configuration/tikv-server/configuration-file.md) +具体参数意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) From 39a72893773586fb3326a5acb156b083dd40cc9a Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:48:07 +0800 Subject: [PATCH 32/56] Update dynamic-config.md Co-authored-by: Ran --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index c1f2f0b00fbb..ecde591e279a 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -127,7 +127,7 @@ mysql> show warnings; | pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体参数意义可参考 [PD 配置文件描述](https://pingcap.com/docs-cn/stable/pd-configuration-file/) +具体参数意义可参考 [PD 配置文件描述](/pd-configuration-file.md) ### TiKV From 5baf345450b255ce5d201563a047ccac6b9618d2 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 10:59:13 +0800 Subject: [PATCH 33/56] Update dynamic-config.md --- dynamic-config.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index ecde591e279a..fb13c1f44e31 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -156,8 +156,8 @@ mysql> show warnings; | raftstore.lock-cf-compact-bytes-threshold | 触发对 lock CF 进行 compact 的大小 | | raftstore.messages-per-tick | 每轮处理的消息最大个数 | | raftstore.max-peer-down-duration | 副本允许的最长未响应时间 | -| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间 | -| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间 | +| raftstore.max-leader-missing-duration | 允许副本处于无主状态的最长时间,超过将会向 PD 校验自己是否已经被删除 | +| raftstore.abnormal-leader-missing-duration | 允许副本处于无主状态的时间,超过将视为异常,标记在 metrics 和日志中 | | raftstore.peer-stale-state-check-interval | 触发检验副本是否处于无主状态的时间间隔 | | raftstore.consistency-check-interval | 触发一致性检查的时间间隔 | | raftstore.raft-store-max-leader-lease | Region 主可信任期的最长时间 | From c74f8073a3c2f1da576465b515cc1b02bd908a4f Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:19 +0800 Subject: [PATCH 34/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index fb13c1f44e31..e50f40d18db1 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -118,7 +118,7 @@ mysql> show warnings; | schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | | replication.max-replicas | 用于设置副本的数量 | | replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | -| replication.enable-placement-rules | 开启 placement rules | +| replication.enable-placement-rules | 开启 Placement Rules | | replication.strictly-match-label | 开启 label 检查 | | pd-server.use-region-storage | 开启独立的 region 存储 | | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| From 3cbe65373331c1690aa8fd256790584b172184e4 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:29 +0800 Subject: [PATCH 35/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index e50f40d18db1..0bfcb5dd210f 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -145,7 +145,7 @@ mysql> show warnings; | raftstore.split-region-check-tick-interval | 检查 Region 是否需要分裂的时间间隔 | | raftstore.region-split-check-diff | 允许 Region 数据超过指定大小的最大值 | | raftstore.region-compact-check-interval | 检查是否需要人工触发 RocksDB compaction 的时间间隔 | -| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 region 个数 | +| raftstore.region-compact-check-step | 每轮校验人工 compaction 时,一次性检查的 Region 个数 | | raftstore.region-compact-min-tombstones | 触发 RocksDB compaction 需要的 tombstone 个数 | | raftstore.region-compact-tombstones-percent | 触发 RocksDB compaction 需要的 tombstone 所占比例 | | raftstore.pd-heartbeat-tick-interval | 触发 Region 对 PD 心跳的时间间隔 | From ba7bfdd51c5e86aa08be06bdbd1a265f61aee6ca Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 12:09:38 +0800 Subject: [PATCH 36/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 0bfcb5dd210f..62347ac1b75f 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -120,7 +120,7 @@ mysql> show warnings; | replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | | replication.enable-placement-rules | 开启 Placement Rules | | replication.strictly-match-label | 开启 label 检查 | -| pd-server.use-region-storage | 开启独立的 region 存储 | +| pd-server.use-region-storage | 开启独立的 Region 存储 | | pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| | pd-server.key-type| 用于设置集群 key 的类型 | | pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | From cf72c83e53dee1e9e2ae570b12f76e6de6ffda55 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Tue, 26 May 2020 13:00:09 +0800 Subject: [PATCH 37/56] Update dynamic-config.md Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com> --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 62347ac1b75f..63c3e2d85173 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -198,7 +198,7 @@ mysql> show warnings; | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可以为是 `rocksdb`,`raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可为 `rocksdb`,`raftdb`。 - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 From a0a875563a30b37aa72dba0a7bfe72fc9db0bf81 Mon Sep 17 00:00:00 2001 From: yikeke Date: Thu, 28 May 2020 11:06:45 +0800 Subject: [PATCH 38/56] refine format --- dynamic-config.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 63c3e2d85173..91b08e1b0a67 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -19,8 +19,11 @@ category: reference 可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: +```sql +show config; +``` + ``` -mysql> show config; +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -38,36 +41,43 @@ mysql> show config; 还可以根据对应的字段进行过滤,如: -``` -mysql> show config where type='tidb' -mysql> show config where instance in (...) -mysql> show config where name like '%log%' -mysql> show config where type='tikv' and name='log-level' +```sql +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' ``` ### 修改实例配置 执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: -``` +```sql set config tikv log.level="info" set config "127.0.0.1:2379" log.level="info" ``` 设置成功会返回 `Query OK`: -``` -mysql> set config '127.0.0.1:2379' log.level='info'; +```sql Query OK, 0 rows affected (0.01 sec) ``` 在批量修改时如果有错误发生,会以 warning 的形式返回: +```sql +set config tikv log-level='warn'; +``` + ``` -mysql> set config tikv log-level='warn'; Query OK, 0 rows affected, 1 warning (0.04 sec) +``` -mysql> show warnings; +```sql +show warnings; +``` + +``` +---------+------+---------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------+ From 96795bc1d512b254fb690c86235dbf25b7b59689 Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Thu, 28 May 2020 16:26:35 +0800 Subject: [PATCH 39/56] add TOC --- TOC.md | 1 + dynamic-config.md | 18 ++++++++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/TOC.md b/TOC.md index 58f562dc6f63..cb6452a4ebd9 100644 --- a/TOC.md +++ b/TOC.md @@ -75,6 +75,7 @@ + [TiFlash 常用运维操作](/tiflash/maintain-tiflash.md) + [TiUP 常用运维操作](/maintain-tidb-using-tiup.md) + [Ansible 常用运维操作](/maintain-tidb-using-ansible.md) + + [动态配置变更](/dynamic-config.md) + 监控与告警 + [监控框架概述](/tidb-monitoring-framework.md) + [监控 API](/tidb-monitoring-api.md) diff --git a/dynamic-config.md b/dynamic-config.md index 91b08e1b0a67..a7b6b815ac8d 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -23,7 +23,7 @@ category: reference show config; ``` -``` +```sql +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Type | Instance | Name | Value | +------+-----------------+-----------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -69,7 +69,7 @@ Query OK, 0 rows affected (0.01 sec) set config tikv log-level='warn'; ``` -``` +```sql Query OK, 0 rows affected, 1 warning (0.04 sec) ``` @@ -77,7 +77,7 @@ Query OK, 0 rows affected, 1 warning (0.04 sec) show warnings; ``` -``` +```sql +---------+------+---------------------------------------------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------------------------------------------------------------------------+ @@ -86,13 +86,11 @@ show warnings; 1 row in set (0.00 sec) ``` -> **注意:** -> -> 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 -> -> 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; -> -> 批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 +为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 + +某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; + +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 ## 支持参数列表 From ac0b025b102eaeedfb31d886faba133a9fb4b100 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 28 May 2020 16:48:55 +0800 Subject: [PATCH 40/56] Update dynamic-config.md --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index a7b6b815ac8d..d4eb689cbbfd 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -50,7 +50,7 @@ show config where type='tikv' and name='log-level' ### 修改实例配置 -执行 SQL 语句 `set config`,可以结合实例地址和类型来修改配置,如: +执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: ```sql set config tikv log.level="info" From a5918a3176b630f04425b25e4f777b258e789568 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 28 May 2020 17:12:48 +0800 Subject: [PATCH 41/56] address comments Signed-off-by: Ryan Leung --- dynamic-config.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index d4eb689cbbfd..2737e472817d 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -52,8 +52,15 @@ show config where type='tikv' and name='log-level' 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: +修改全部 TiKV 实例参数: + ```sql set config tikv log.level="info" +``` + +修改单个 TiKV 实例参数: + +```sql set config "127.0.0.1:2379" log.level="info" ``` @@ -90,7 +97,9 @@ show warnings; 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; -批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 + +针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。而针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。 ## 支持参数列表 From a3e95003bfd2ba6a4e9110b076ee71b43a6a737f Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 9 Jul 2020 18:47:34 +0800 Subject: [PATCH 42/56] add a notice Signed-off-by: Ryan Leung --- dynamic-config.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 2737e472817d..80c6f92bf1a2 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -50,6 +50,10 @@ show config where type='tikv' and name='log-level' ### 修改实例配置 +> **注意:** +> +> 修改配置后,需要使用 `tiup edit_config` 修改对应的配置,否则 `upgrade` 等运维操作会将动态配置修改的结果进行覆盖。 + 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: 修改全部 TiKV 实例参数: @@ -61,7 +65,7 @@ set config tikv log.level="info" 修改单个 TiKV 实例参数: ```sql -set config "127.0.0.1:2379" log.level="info" +set config "127.0.0.1:20180" log.level="info" ``` 设置成功会返回 `Query OK`: From 8bb1c63d51f4e76b7c795cb1dbc9abe2ad9445e8 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Thu, 16 Jul 2020 18:48:20 +0800 Subject: [PATCH 43/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 80c6f92bf1a2..aa2abcc7edf0 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -52,7 +52,7 @@ show config where type='tikv' and name='log-level' > **注意:** > -> 修改配置后,需要使用 `tiup edit_config` 修改对应的配置,否则 `upgrade` 等运维操作会将动态配置修改的结果进行覆盖。 +> 动态修改 TiKV 配置后,同时会自动修改 TiKV 的配置文件。但还需要使用 `tiup edit-config` 修改对应的配置,否则 `upgrade` `reload` 等运维操作会将动态配置修改的结果覆盖。修改配置的操作请参考:[修改配置](/maintain-tidb-using-tiup.md#修改配置参数),`tiup edit-config` 后不需要执行 `tiup reload` 操作。 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: From d8adbe51a47d3b1b1cfbee2951609e500466cb1e Mon Sep 17 00:00:00 2001 From: linning Date: Thu, 16 Jul 2020 18:40:19 +0800 Subject: [PATCH 44/56] update tikv config list Signed-off-by: linning --- dynamic-config.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index aa2abcc7edf0..a5beea283f9e 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -92,7 +92,7 @@ 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 change" | +| 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) ``` @@ -154,7 +154,6 @@ show warnings; | 参数 | 简介 | | --- | --- | -| refresh-config-interval | 尝试更新配置的时间间隔 | | raftstore.sync-log | 数据、log 落盘是否 sync | | raftstore.raft-entry-max-size | 单个日志最大大小 | | raftstore.raft-log-gc-tick-interval | 删除 Raft 日志的轮询任务调度间隔时间 | @@ -186,6 +185,7 @@ show warnings; | raftstore.merge-check-tick-interval | 触发 Merge 完成检查的时间间隔 | | raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | | raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | +| raftstore.hibernate-timeout | 启动后进入静默状态前需要等待的最短时间,在该时间段内不会进入静默状态(未 release)| | coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | | coprocessor.batch-split-limit | 批量分裂 Region 的阈值 | | coprocessor.region-max-size | Region 容量空间最大值 | @@ -194,9 +194,12 @@ show warnings; | coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | | pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | | pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | +| pessimistic-txn.pipelined | 是否开启流水线式加悲观锁流程 | | gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数)| | gc.batch-keys | 一轮处理 key 的个数 | | gc.max-write-bytes-per-sec | 一秒可写入 RocksDB 的最大字节数 | +| gc.enable-compaction-filter | 是否使用 compaction filter | +| gc.compaction-filter-skip-version-check | 是否跳过 compaction filter 的集群版本检查(未 release)| | {db-name}.max-total-wal-size | WAL 总大小限制 | | {db-name}.max-background-jobs | RocksDB 后台线程个数 | | {db-name}.max-open-files | RocksDB 可以打开的文件总数 | @@ -218,6 +221,14 @@ show warnings; | {db-name}.{cf-name}.soft-pending-compaction-bytes-limit | pending compaction bytes 的软限制 | | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | +| storage.block-cache.capacity | 共享 block cache 的大小(自 4.0.3 起支持) | +| backup.num-threads | backup 线程的数量(自 4.0.3 起支持) | +| split.qps-threshold | | +| split.split-balance-score | | +| split.split-contained-score | | +| split.detect-times | | +| split.sample-num | | +| split.sample-threshold | | 上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可为 `rocksdb`,`raftdb`。 From 2c4415b09ee87fbb9e1b8c540a11a43984160fad Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 24 Jul 2020 12:48:30 +0800 Subject: [PATCH 45/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/dynamic-config.md b/dynamic-config.md index a5beea283f9e..fcef15cedcf4 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -107,6 +107,31 @@ show warnings; ## 支持参数列表 +### TiDB + +TiDB 使用 [SQL 变量](/system-variables.md)来控制行为,下面是一个例子: + +```sql +set tidb_slow_log_threshold = 200; +``` + +```sql +Query OK, 0 rows affected (0.00 sec) +``` + +```sql +mysql> select @@tidb_slow_log_threshold; +``` + +```sql ++---------------------------+ +| @@tidb_slow_log_threshold | ++---------------------------+ +| 200 | ++---------------------------+ +1 row in set (0.00 sec) +``` + ### PD | 参数 | 简介 | From 51c69be288eef4fb5f701e883686d251aabba8dd Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 24 Jul 2020 13:14:29 +0800 Subject: [PATCH 46/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dynamic-config.md b/dynamic-config.md index fcef15cedcf4..1e69c171ca82 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -97,6 +97,18 @@ show warnings; 1 row in set (0.00 sec) ``` +PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的参数: + +```sql +set config pd log.level="info" +``` + +设置成功会返回 `Query OK`: + +```sql +Query OK, 0 rows affected (0.01 sec) +``` + 为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; From df77486e4980d10190672f0f5c16563727081ec7 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 24 Jul 2020 13:36:50 +0800 Subject: [PATCH 47/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 175 +++++++++++++++++++++++----------------------- 1 file changed, 87 insertions(+), 88 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 1e69c171ca82..c31bb3c79937 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -48,7 +48,7 @@ show config where name like '%log%' show config where type='tikv' and name='log-level' ``` -### 修改实例配置 +### 动态修改 TiKV 配置 > **注意:** > @@ -97,97 +97,12 @@ show warnings; 1 row in set (0.00 sec) ``` -PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的参数: - -```sql -set config pd log.level="info" -``` - -设置成功会返回 `Query OK`: - -```sql -Query OK, 0 rows affected (0.01 sec) -``` - -为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 SQL 变量去控制。 - -某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``tikv-client.`store-limit` ``; - 批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 -针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。而针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。 - -## 支持参数列表 - -### TiDB - -TiDB 使用 [SQL 变量](/system-variables.md)来控制行为,下面是一个例子: - -```sql -set tidb_slow_log_threshold = 200; -``` - -```sql -Query OK, 0 rows affected (0.00 sec) -``` - -```sql -mysql> select @@tidb_slow_log_threshold; -``` - -```sql -+---------------------------+ -| @@tidb_slow_log_threshold | -+---------------------------+ -| 200 | -+---------------------------+ -1 row in set (0.00 sec) -``` +针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``raftstore.raft-log-gc-size-limit` ``; -### PD - -| 参数 | 简介 | -| --- | --- | -| log.level| 日志级别 | -| cluster-version | 集群的版本 | -| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 MB) | -| schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | -| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | -| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | -| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | -| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | -| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | -| schedule.leader-schedule-policy | 用于控制 leader 调度的策略 | -| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | -| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | -| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | -| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | -| schedule.hot-region-schedule-limit | 可以控制同时进行的热点调度的任务个数 | -| schedule.hot-region-cache-hits-threshold | 用于设置 Region 被视为热点的阈值 | -| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | -| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | -| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | -| schedule.enable-remove-down-replica | 用于开启自动删除 DownReplica 的特性 | -| schedule.enable-replace-offline-replica | 用于开启迁移 OfflineReplica 的特性 | -| schedule.enable-make-up-replica | 用于开启补充副本的特性 | -| schedule.enable-remove-extra-replica | 用于开启删除多余副本的特性 | -| schedule.enable-location-replacement | 用于开启隔离级别检查 | -| schedule.enable-cross-table-merge | 用于开启跨表 Merge | -| schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | -| replication.max-replicas | 用于设置副本的数量 | -| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | -| replication.enable-placement-rules | 开启 Placement Rules | -| replication.strictly-match-label | 开启 label 检查 | -| pd-server.use-region-storage | 开启独立的 Region 存储 | -| pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| -| pd-server.key-type| 用于设置集群 key 的类型 | -| pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | -| pd-server.dashboard-address | 用于设置 dashboard 的地址 | -| replication-mode.replication-mode | 备份的模式 | - -具体参数意义可参考 [PD 配置文件描述](/pd-configuration-file.md) +支持参数列表如下: -### TiKV | 参数 | 简介 | | --- | --- | @@ -273,3 +188,87 @@ mysql> select @@tidb_slow_log_threshold; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 具体参数意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) + +### 动态修改 PD 配置 + +PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的参数: + +```sql +set config pd log.level="info" +``` + +设置成功会返回 `Query OK`: + +```sql +Query OK, 0 rows affected (0.01 sec) +``` + +针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ``` ` ``` 包裹起来,如 ``schedule.`leader-schedule-limit` ``; + +支持参数列表如下: + +| 参数 | 简介 | +| --- | --- | +| log.level| 日志级别 | +| cluster-version | 集群的版本 | +| schedule.max-merge-region-size | 控制 Region Merge 的 size 上限(单位是 MB) | +| schedule.max-merge-region-keys | 控制 Region Merge 的 key 数量上限 | +| schedule.patrol-region-interval | 控制 replicaChecker 检查 Region 健康状态的运行频率 | +| schedule.split-merge-interval | 控制对同一个 Region 做 split 和 merge 操作的间隔 | +| schedule.max-snapshot-count | 控制单个 store 最多同时接收或发送的 snapshot 数量 | +| schedule.max-pending-peer-count | 控制单个 store 的 pending peer 上限 | +| schedule.max-store-down-time | PD 认为失联 store 无法恢复的时间 | +| schedule.leader-schedule-policy | 用于控制 leader 调度的策略 | +| schedule.leader-schedule-limit | 可以控制同时进行 leader 调度的任务个数 | +| schedule.region-schedule-limit | 可以控制同时进行 Region 调度的任务个数 | +| schedule.replica-schedule-limit | 可以控制同时进行 replica 调度的任务个数 | +| schedule.merge-schedule-limit | 控制同时进行的 Region Merge 调度的任务 | +| schedule.hot-region-schedule-limit | 可以控制同时进行的热点调度的任务个数 | +| schedule.hot-region-cache-hits-threshold | 用于设置 Region 被视为热点的阈值 | +| schedule.high-space-ratio | 用于设置 store 空间充裕的阈值 | +| schedule.low-space-ratio | 用于设置 store 空间不足的阈值 | +| schedule.tolerant-size-ratio | 控制 balance 缓冲区大小 | +| schedule.enable-remove-down-replica | 用于开启自动删除 DownReplica 的特性 | +| schedule.enable-replace-offline-replica | 用于开启迁移 OfflineReplica 的特性 | +| schedule.enable-make-up-replica | 用于开启补充副本的特性 | +| schedule.enable-remove-extra-replica | 用于开启删除多余副本的特性 | +| schedule.enable-location-replacement | 用于开启隔离级别检查 | +| schedule.enable-cross-table-merge | 用于开启跨表 Merge | +| schedule.enable-one-way-merge | 用于开启单向 Merge(只允许和下一个相邻的 Region Merge) | +| replication.max-replicas | 用于设置副本的数量 | +| replication.location-labels | 用于设置 TiKV 集群的拓扑信息 | +| replication.enable-placement-rules | 开启 Placement Rules | +| replication.strictly-match-label | 开启 label 检查 | +| pd-server.use-region-storage | 开启独立的 Region 存储 | +| pd-server.max-gap-reset-ts | 用于设置最大的重置 timestamp 的间隔(BR)| +| pd-server.key-type| 用于设置集群 key 的类型 | +| pd-server.metric-storage | 用于设置集群 metrics 的存储地址 | +| pd-server.dashboard-address | 用于设置 dashboard 的地址 | +| replication-mode.replication-mode | 备份的模式 | + +具体参数意义可参考 [PD 配置文件描述](/pd-configuration-file.md) + +### 动态修改 TiDB 配置 + +为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 [SQL 变量](/system-variables.md)去控制。下面是一个例子: + +```sql +set tidb_slow_log_threshold = 200; +``` + +```sql +Query OK, 0 rows affected (0.00 sec) +``` + +```sql +mysql> select @@tidb_slow_log_threshold; +``` + +```sql ++---------------------------+ +| @@tidb_slow_log_threshold | ++---------------------------+ +| 200 | ++---------------------------+ +1 row in set (0.00 sec) +``` From 7e6a96a33a4902c3a155974584cfd2f76945a1d4 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 24 Jul 2020 16:53:51 +0800 Subject: [PATCH 48/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index c31bb3c79937..dae0e5b69fe7 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -250,7 +250,16 @@ Query OK, 0 rows affected (0.01 sec) ### 动态修改 TiDB 配置 -为了避免和 SQL 变量混淆,TiDB 的配置可以通过 `show config` 查看但是不能进行修改,动态配置时会返回错误;如果想动态修改 TiDB 行为,请用对应的 [SQL 变量](/system-variables.md)去控制。下面是一个例子: +TiDB 使用 [SQL 变量](/system-variables.md)来控制行为,下表汇总了所有支持动态修改的配置项和相应的系统变量: + +| 配置项 | 对应变量 | 简介 | +| --- | --- | --- | +| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | +| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | +| log.slow-threshold | tidb_slow_log_threshold | 慢日志阈值 | +| log.expensive-threshold | tidb_expensive_query_time_threshold | expensive 查询阈值 | + +下面例子展示了如何通过变量 `tidb_slow_log_threshold` 动态修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: ```sql set tidb_slow_log_threshold = 200; From 5f6d4adc4bb64dec550ad0d4121672172ff272a2 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Fri, 24 Jul 2020 16:58:50 +0800 Subject: [PATCH 49/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index dae0e5b69fe7..fe08055e8765 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -103,7 +103,6 @@ show warnings; 支持参数列表如下: - | 参数 | 简介 | | --- | --- | | raftstore.sync-log | 数据、log 落盘是否 sync | @@ -175,12 +174,9 @@ show warnings; | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | | storage.block-cache.capacity | 共享 block cache 的大小(自 4.0.3 起支持) | | backup.num-threads | backup 线程的数量(自 4.0.3 起支持) | -| split.qps-threshold | | -| split.split-balance-score | | -| split.split-contained-score | | -| split.detect-times | | -| split.sample-num | | -| split.sample-threshold | | +| split.qps-threshold | 对 Region 执行 load-base-split 的阈值,如果读 qps 连续 10s 内均超过这个值,则进行 split | +| split.split-balance-score | load-base-split 控制参数,确保 split 后左右访问尽量均匀 | +| split.split-contained-score | load-base-split 控制参数,尽量减少 split 后跨 region 访问 | 上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可为 `rocksdb`,`raftdb`。 @@ -250,14 +246,7 @@ Query OK, 0 rows affected (0.01 sec) ### 动态修改 TiDB 配置 -TiDB 使用 [SQL 变量](/system-variables.md)来控制行为,下表汇总了所有支持动态修改的配置项和相应的系统变量: - -| 配置项 | 对应变量 | 简介 | -| --- | --- | --- | -| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | -| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | -| log.slow-threshold | tidb_slow_log_threshold | 慢日志阈值 | -| log.expensive-threshold | tidb_expensive_query_time_threshold | expensive 查询阈值 | +TiDB 使用 [SQL 变量](/system-variables.md)来控制行为。 下面例子展示了如何通过变量 `tidb_slow_log_threshold` 动态修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: @@ -281,3 +270,12 @@ mysql> select @@tidb_slow_log_threshold; +---------------------------+ 1 row in set (0.00 sec) ``` + +支持动态修改的配置项和相应的系统变量如下: + +| 配置项 | 对应变量 | 简介 | +| --- | --- | --- | +| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | +| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | +| log.slow-threshold | tidb_slow_log_threshold | 慢日志阈值 | +| log.expensive-threshold | tidb_expensive_query_time_threshold | expensive 查询阈值 | From 96305de99da2f574a72028840734cd7e02da13d9 Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Mon, 27 Jul 2020 11:43:59 +0800 Subject: [PATCH 50/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index fe08055e8765..039c8796a000 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,6 +1,6 @@ --- title: 动态配置变更 -category: reference +summary: 介绍动态配置项功能。 --- # 动态配置变更 @@ -97,7 +97,9 @@ show warnings; 1 row in set (0.00 sec) ``` -批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 tikv 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 TiKV 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 + +如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``raftstore.raft-log-gc-size-limit` ``; From 95698cc4c9e4c4f62f2fdf96f57c8e359afd129a Mon Sep 17 00:00:00 2001 From: Ryan Leung Date: Mon, 27 Jul 2020 13:04:11 +0800 Subject: [PATCH 51/56] address the comment Signed-off-by: Ryan Leung --- dynamic-config.md | 46 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 039c8796a000..ca78893735a8 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -1,17 +1,15 @@ --- -title: 动态配置变更 -summary: 介绍动态配置项功能。 +title: 在线修改集群配置 +summary: 介绍在线修改集群配置的功能。 --- -# 动态配置变更 +# 在线配置变更 > **注意:** > > 该功能目前是实验性阶段,不建议在生产环境中使用。 -动态配置变更主要是通过利用 SQL 对包括 TiKV、PD 在内的各组件的配置进行在线更新。用户可以通过利用动态配置变更对各组件进行性能调优而无需重启集群组件。 - -动态配置不可用于更新 TiDB 的配置,如果想动态改变 TiDB 的行为,请直接修改其对应的 SQL 变量。 +在线配置变更主要是通过利用 SQL 对包括 TiDB、TiKV 以及 PD 在内的各组件的配置进行在线更新。用户可以通过利用在线配置变更对各组件进行性能调优而无需重启集群组件。但目前在线修改 TiDB 实例配置的方式和其他组件(TiKV、PD)有所不同。 ## 常用操作 @@ -48,21 +46,21 @@ show config where name like '%log%' show config where type='tikv' and name='log-level' ``` -### 动态修改 TiKV 配置 +### 在线修改 TiKV 配置 > **注意:** > -> 动态修改 TiKV 配置后,同时会自动修改 TiKV 的配置文件。但还需要使用 `tiup edit-config` 修改对应的配置,否则 `upgrade` `reload` 等运维操作会将动态配置修改的结果覆盖。修改配置的操作请参考:[修改配置](/maintain-tidb-using-tiup.md#修改配置参数),`tiup edit-config` 后不需要执行 `tiup reload` 操作。 +> 在线修改 TiKV 配置项后,同时会自动修改 TiKV 的配置文件。但还需要使用 `tiup edit-config` 修改对应的配置项,否则 `upgrade` `reload` 等运维操作会将在线修改配置后的结果覆盖。修改配置的操作请参考:[修改配置](/maintain-tidb-using-tiup.md#修改配置参数),`tiup edit-config` 后不需要执行 `tiup reload` 操作。 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: -修改全部 TiKV 实例参数: +修改全部 TiKV 实例配置: ```sql set config tikv log.level="info" ``` -修改单个 TiKV 实例参数: +修改单个 TiKV 实例配置: ```sql set config "127.0.0.1:20180" log.level="info" @@ -101,11 +99,11 @@ show warnings; 如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 -针对 TiKV 可动态修改的参数,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的参数为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``raftstore.raft-log-gc-size-limit` ``; +针对 TiKV 可在线修改的配置项,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的配置为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``raftstore.raft-log-gc-size-limit` ``; -支持参数列表如下: +支持配置项列表如下: -| 参数 | 简介 | +| 配置项 | 简介 | | --- | --- | | raftstore.sync-log | 数据、log 落盘是否 sync | | raftstore.raft-entry-max-size | 单个日志最大大小 | @@ -180,16 +178,16 @@ show warnings; | split.split-balance-score | load-base-split 控制参数,确保 split 后左右访问尽量均匀 | | split.split-contained-score | load-base-split 控制参数,尽量减少 split 后跨 region 访问 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的参数是 RocksDB 相关的配置。`db-name` 的取值可为 `rocksdb`,`raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的是 RocksDB 相关的配置项。`db-name` 的取值可为 `rocksdb`,`raftdb`。 - 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; - 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 -具体参数意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) +具体配置项意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) -### 动态修改 PD 配置 +### 在线修改 PD 配置 -PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的参数: +PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的配置项: ```sql set config pd log.level="info" @@ -201,11 +199,11 @@ set config pd log.level="info" Query OK, 0 rows affected (0.01 sec) ``` -针对 PD 可动态修改的参数,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的参数为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ``` ` ``` 包裹起来,如 ``schedule.`leader-schedule-limit` ``; +针对 PD 可在线修改的配置项,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的配置为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ``` ` ``` 包裹起来,如 ``schedule.`leader-schedule-limit` ``; -支持参数列表如下: +支持配置项列表如下: -| 参数 | 简介 | +| 配置项 | 简介 | | --- | --- | | log.level| 日志级别 | | cluster-version | 集群的版本 | @@ -244,13 +242,13 @@ Query OK, 0 rows affected (0.01 sec) | pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体参数意义可参考 [PD 配置文件描述](/pd-configuration-file.md) +具体配置项意义可参考 [PD 配置文件描述](/pd-configuration-file.md) -### 动态修改 TiDB 配置 +### 在线修改 TiDB 配置 TiDB 使用 [SQL 变量](/system-variables.md)来控制行为。 -下面例子展示了如何通过变量 `tidb_slow_log_threshold` 动态修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: +下面例子展示了如何通过变量 `tidb_slow_log_threshold` 在线修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: ```sql set tidb_slow_log_threshold = 200; @@ -273,7 +271,7 @@ mysql> select @@tidb_slow_log_threshold; 1 row in set (0.00 sec) ``` -支持动态修改的配置项和相应的系统变量如下: +支持在线修改的配置项和相应的系统变量如下: | 配置项 | 对应变量 | 简介 | | --- | --- | --- | From cf034b2f09ffde7821478fcc71fdfb4bafa58c4f Mon Sep 17 00:00:00 2001 From: Yuanjia Zhang Date: Tue, 28 Jul 2020 11:26:10 +0800 Subject: [PATCH 52/56] address comments --- dynamic-config.md | 115 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 108 insertions(+), 7 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index ca78893735a8..7e27907ab3db 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -246,7 +246,7 @@ Query OK, 0 rows affected (0.01 sec) ### 在线修改 TiDB 配置 -TiDB 使用 [SQL 变量](/system-variables.md)来控制行为。 +在线修改 TiDB 配置的方式和 TiKV/PD 有所不同,我们通过 [SQL 变量](/system-variables.md) 来完成。 下面例子展示了如何通过变量 `tidb_slow_log_threshold` 在线修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: @@ -273,9 +273,110 @@ mysql> select @@tidb_slow_log_threshold; 支持在线修改的配置项和相应的系统变量如下: -| 配置项 | 对应变量 | 简介 | -| --- | --- | --- | -| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | -| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | -| log.slow-threshold | tidb_slow_log_threshold | 慢日志阈值 | -| log.expensive-threshold | tidb_expensive_query_time_threshold | expensive 查询阈值 | +| 变量 | 简介 | +| --- | --- | +| autocommit | 这个变量用来设置是否自动 Commit 事务 | +| ddl_slow_threshold | 耗时超过该阈值的 DDL 操作会被输出到日志,单位为毫秒 | +| foreign_key_checks | 为保持兼容,TiDB 对外键检查返回 OFF | +| hostname | 这个变量一个只读变量,表示 TiDB server 的主机名 | +| innodb_lock_wait_timeout | 悲观事务语句等锁时间,单位为秒 | +| last_plan_from_cache | 这个变量用来显示上一个 `execute` 语句所使用的执行计划是不是直接从 plan cache 中取出来的 | +| max_execution_time | 语句最长执行时间,单位为毫秒。默认值 (0) 表示无限制 | +| sql_select_limit | `SELECT` 语句返回的最大行数 | +| tidb_allow_batch_cop | 这个变量用于控制 TiDB 向 TiFlash 发送 coprocessor 请求的方式,有以下几种取值 | +| tidb_allow_remove_auto_inc | 这个变量用来控制是否允许通过 `ALTER TABLE MODIFY` 或 `ALTER TABLE CHANGE` 来移除某个列的 `AUTO_INCREMENT` 属性。默认 (`0`) 为不允许 | +| tidb_auto_analyze_end_time | 这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的结束时间。例如,只允许在凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下 | +| tidb_auto_analyze_ratio | 这个变量用来设置 TiDB 在后台自动执行 [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) 更新统计信息的阈值。`0.5` 指的是当表中超过 50% 的行被修改时,触发自动 ANALYZE 更新。可以指定 `tidb_auto_analyze_start_time` 和 `tidb_auto_analyze_end_time` 来限制自动 ANALYZE 的时 | +| tidb_auto_analyze_start_time | 这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的开始时间。例如,只允许在凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下 | +| tidb_backoff_lock_fast | 这个变量用来设置读请求遇到锁的 backoff 时间 | +| tidb_backoff_weight | 这个变量用来给 TiDB 的 `backoff` 最大时间增加权重,即内部遇到网络或其他组件(TiKV、PD)故障时,发送重试请求的最大重试时间。可以通过这个变量来调整最大重试时间,最小值为 1 | +| tidb_build_stats_concurrency | 这个变量用来设置 ANALYZE 语句执行时并发度 | +| tidb_capture_plan_baselines | 这个变量用于控制是否开启[自动捕获绑定](/sql-plan-management.md#自动捕获绑定-baseline-capturing)功能。该功能依赖 Statement Summary,因此在使用自动绑定之前需打开 Statement Summary 开关 | +| tidb_check_mb4_value_in_utf8 | 这个变量用来设置是否开启对字符集为 UTF8 类型的数据做合法性检查,默认值 `1` 表示开启检查。这个默认行为和 MySQL 是兼容的 | +| tidb_checksum_table_concurrency | 这个变量用来设置 `ADMIN CHECKSUM TABLE` 语句执行时扫描索引的并发度 | +| tidb_config | 这个变量是一个只读变量,用来获取当前 TiDB Server 的配置信息 | +| tidb_constraint_check_in_place | TiDB 支持乐观事务模型,即在执行写入时,假设不存在冲突。冲突检查是在最后 commit 提交时才去检查。这里的检查指 unique key 检查 | +| tidb_current_ts | 这个变量是一个只读变量,用来获取当前事务的时间戳 | +| tidb_ddl_error_count_limit | 这个变量用来控制 DDL 操作失败重试的次数。失败重试次数超过该参数的值后,会取消出错的 DDL 操作 | +| tidb_ddl_reorg_priority | 这个变量用来设置 `ADD INDEX` 操作 `re-organize` 阶段的执行优先级,可设置为 `PRIORITY_LOW`/`PRIORITY_NORMAL`/`PRIORITY_HIGH` | +| tidb_ddl_reorg_worker_cnt | 这个变量用来设置 DDL 操作 `re-organize` 阶段的并发度 | +| tidb_disable_txn_auto_retry | 这个变量用来设置是否禁用显式事务自动重试,设置为 `on` 时,不会自动重试,如果遇到事务冲突需要在应用层重试 | +| tidb_distsql_scan_concurrency | 这个变量用来设置 scan 操作的并发度 | +| tidb_enable_cascades_planner | 这个变量用于控制是否开启 cascades planner | +| tidb_enable_chunk_rpc | 这个变量用来设置是否启用 Coprocessor 的 `Chunk` 数据编码格式 | +| tidb_enable_fast_analyze | 这个变量用来控制是否启用统计信息快速分析功能。默认值 0 表示不开启 | +| tidb_enable_index_merge | 这个变量用于控制是否开启 index merge 功能 | +| tidb_enable_noop_functions | 这个变量用于控制是否开启 `get_lock` 和 `release_lock` 这两个没有实现的函数。需要注意的是,当前版本的 TiDB 这两个函数永远返回 1 | +| tidb_enable_slow_log | 这个变量用于控制是否开启 slow log 功能,默认开启 | +| tidb_enable_stmt_summary | 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `information_schema.STATEMENTS_SUMMARY` 中,用于定位和排查 SQL 性能问题 | +| tidb_enable_streaming | 这个变量用来设置是否启用 Streaming | +| tidb_enable_table_partition | 这个变量用来设置是否开启 `TABLE PARTITION` 特性。目前变量支持以下三种值 | +| tidb_enable_telemetry | 这个变量用于动态地控制 TiDB 遥测功能是否开启。设置为 `0` 可以关闭 TiDB 遥测功能。当所有 TiDB 实例都设置 [`enable-telemetry`](/tidb-configuration-file.md#enable-telemetry-从-v402-版本开始引入) 为 `false` 时将忽略该系统变量并总是关闭 TiDB 遥测功能。参阅[遥测](/telemetry.md)了解该功能详情 | +| tidb_enable_vectorized_expression | 这个变量用于控制是否开启向量化执行 | +| tidb_enable_window_function | 这个变量用来控制是否开启窗口函数的支持。默认值 1 代表开启窗口函数的功能 | +| tidb_evolve_plan_baselines | 这个变量用于控制是否启用自动演进绑定功能。该功能的详细介绍和使用方法可以参考[自动演进绑定](/sql-plan-management.md#自动演进绑定-baseline-evolution) | +| tidb_evolve_plan_task_end_time | 这个变量用来设置一天中允许自动演进的结束时间 | +| tidb_evolve_plan_task_max_time | 该变量用于限制自动演进功能中,每个执行计划运行的最长时间,单位为秒 | +| tidb_evolve_plan_task_start_time | 这个变量用来设置一天中允许自动演进的开始时间 | +| tidb_expensive_query_time_threshold | 这个变量用来控制打印 expensive query 日志的阈值时间,单位是秒,默认值是 60 秒。expensive query 日志和慢日志的差别是,慢日志是在语句执行完后才打印,expensive query 日志可以把正在执行中的语句且执行时间超过阈值的语句及其相关信息打印出来 | +| tidb_force_priority | 这个变量用于改变 TiDB server 上执行的语句的默认优先级。例如,你可以通过设置该变量来确保正在执行 OLAP 查询的用户优先级低于正在执行 OLTP 查询的用户 | +| tidb_general_log | 这个变量用来设置是否在日志里记录所有的 SQL 语句 | +| tidb_hash_join_concurrency | 这个变量用来设置 hash join 算法的并发度 | +| tidb_hashagg_final_concurrency | 这个变量用来设置并行 hash aggregation 算法 final 阶段的执行并发度。对于聚合函数参数不为 distinct 的情况,HashAgg 分为 partial 和 final 阶段分别并行执行 | +| tidb_hashagg_partial_concurrency | 这个变量用来设置并行 hash aggregation 算法 partial 阶段的执行并发度。对于聚合函数参数不为 distinct 的情况,HashAgg 分为 partial 和 final 阶段分别并行执行 | +| tidb_index_join_batch_size | 这个变量用来设置 index lookup join 操作的 batch 大小,AP 类应用适合较大的值,TP 类应用适合较小的值 | +| tidb_index_lookup_concurrency | 这个变量用来设置 index lookup 操作的并发度,AP 类应用适合较大的值,TP 类应用适合较小的值 | +| tidb_index_lookup_join_concurrency | 这个变量用来设置 index lookup join 算法的并发度 | +| tidb_index_lookup_size | 这个变量用来设置 index lookup 操作的 batch 大小,AP 类应用适合较大的值,TP 类应用适合较小的值 | +| tidb_index_serial_scan_concurrency | 这个变量用来设置顺序 scan 操作的并发度,AP 类应用适合较大的值,TP 类应用适合较小的值 | +| tidb_init_chunk_size | 这个变量用来设置执行过程中初始 chunk 的行数。默认值是 32,可设置的范围是 1~32 | +| tidb_isolation_read_engines | 这个变量用于设置 TiDB 在读取数据时可以使用的存储引擎列表 | +| tidb_low_resolution_tso | 这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据 | +| tidb_max_chunk_size | 最小值� | +| tidb_max_delta_schema_count | 这个变量用来设置缓存 schema 版本信息(对应版本修改的相关 table IDs)的个数限制,可设置的范围 100 - 16384。此变量在 2.1.18 及之后版本支持 | +| tidb_mem_quota_hashjoin | 这个变量用来设置 `HashJoin` 算子的内存使用阈值 | +| tidb_mem_quota_indexlookupjoin | 这个变量用来设置 `IndexLookupJoin` 算子的内存使用阈值 | +| tidb_mem_quota_indexlookupreader | 这个变量用来设置 `IndexLookupReader` 算子的内存使用阈值 | +| tidb_mem_quota_mergejoin | 这个变量用来设置 `MergeJoin` 算子的内存使用阈值 | +| tidb_mem_quota_nestedloopapply | 这个变量用来设置 `NestedLoopApply` 算子的内存使用阈值 | +| tidb_mem_quota_query | 这个变量用来设置一条查询语句的内存使用阈值 | +| tidb_mem_quota_sort | 这个变量用来设置 `Sort` 算子的内存使用阈值 | +| tidb_mem_quota_topn | 这个变量用来设置 `TopN` 算子的内存使用阈值 | +| tidb_metric_query_range_duration | 这个变量设置了查询 `METRIC_SCHEMA` 时生成的 Prometheus 语句的 range duration,单位为秒 | +| tidb_metric_query_step | 这个变量设置了查询 `METRIC_SCHEMA` 时生成的 Prometheus 语句的 step,单位为秒 | +| tidb_opt_agg_push_down | 这个变量用来设置优化器是否执行聚合函数下推到 Join 之前的优化操作 | +| tidb_opt_correlation_exp_factor | 当交叉估算方法不可用时,会采用启发式估算方法。这个变量用来控制启发式方法的行为。当值为 0 时不用启发式估算方法,大于 0 时,该变量值越大,启发式估算方法越倾向 index scan,越小越倾向 table scan | +| tidb_opt_correlation_threshold | 这个变量用来设置优化器启用交叉估算 row count 方法的阈值。如果列和 handle 列之间的顺序相关性超过这个阈值,就会启用交叉估算方法 | +| tidb_opt_distinct_agg_push_down | 这个变量用来设置优化器是否执行带有 `Distinct` 的聚合函数(比如 `select count(distinct a) from t`)下推到 Coprocessor 的优化操作 | +| tidb_opt_insubq_to_join_and_agg | 这个变量用来设置是否开启优化规则:将子查询转成 join 和 aggregation | +| tidb_opt_write_row_id | 这个变量用来设置是否允许 `INSERT`、`REPLACE` 和 `UPDATE` 操作 `_tidb_rowid` 列,默认是不允许操作。该选项仅用于 TiDB 工具导数据时使用 | +| tidb_projection_concurrency | 这个变量用来设置 `Projection` 算子的并发度 | +| tidb_query_log_max_len | 最长的 SQL 输出长度。当语句的长度大于 query-log-max-len,将会被截断输出 | +| tidb_pprof_sql_cpu | 这个变量用来控制是否在 profile 输出中标记出对应的 SQL 语句,用于定位和排查性能问题 | +| tidb_record_plan_in_slow_log | 这个变量用于控制是否在 slow log 里包含慢查询的执行计划 | +| tidb_replica_read | 这个变量用于控制 TiDB 读取数据的位置,有以下三个选择 | +| tidb_retry_limit | 这个变量用来设置最大重试次数。一个事务执行中遇到可重试的错误(例如事务冲突、事务提交过慢或表结构变更)时,会根据该变量的设置进行重试。注意当 `tidb_retry_limit = 0` 时,也会禁用自动重试 | +| tidb_row_format_version | 控制新保存数据的表数据格式版本。TiDB v4.0 中默认使用版本号为 2 的[新表数据格式](https://github.com/pingcap/tidb/blob/master/docs/design/2018-07-19-row-format.md)保存新数据 | +| tidb_scatter_region | TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在建表语句执行时,同步打散刚分裂出的 Region。适用于批量建表后紧接着批量写入数据,能让刚分裂出的 Region 先在 TiKV 分散而不用等待 PD 进行调度。为了保证后续批量写入数据的稳定性,建表语句会等待打散 Region 完成后再返回建表成功,建表语句执行时间会是关闭该变量的数倍 | +| tidb_skip_isolation_level_check | 开启这个开关之后,如果对 `tx_isolation` 赋值一个 TiDB 不支持的隔离级别,不会报错,有助于兼容其他设置了(但不依赖于)不同隔离级别的应用 | +| tidb_skip_utf8_check | 这个变量用来设置是否跳过 UTF-8 字符的验证 | +| tidb_slow_log_threshold | 输出慢日志的耗时阈值。当查询大于这个值,就会当做是一个慢查询,输出到慢查询日志。默认为 300ms | +| tidb_slow_query_file | 查询 `INFORMATION_SCHEMA.SLOW_QUERY` 只会解析配置文件中 `slow-query-file` 设置的慢日志文件名,默认是 "tidb-slow.log"。但如果想要解析其他的日志文件,可以通过设置 session 变量 `tidb_slow_query_file` 为具体的文件路径,然后查询 `INFORMATION_SCHEMA.SLOW_QUERY` 就会按照设置的路径去解析慢日志文件。更多详情可以参考 [SLOW_QUERY 文档](/identify-slow-queries.md) | +| tidb_snapshot | 这个变量用来设置当前会话期待读取的历史数据所处时刻。比如当设置为 `"2017-11-11 20:20:20"` 时或者一个 TSO 数字 "400036290571534337",当前会话将能读取到该时刻的数据 | +| tidb_stmt_summary_history_size | 这个变量设置了 statement summary 的历史记录容量 | +| tidb_stmt_summary_internal_query | 这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息 | +| tidb_stmt_summary_max_sql_length | 这个变量控制 statement summary 显示的 SQL 字符串长度 | +| tidb_stmt_summary_max_stmt_count | 这个变量设置了 statement summary 在内存中保存的语句的最大数量 | +| tidb_stmt_summary_refresh_interval | 这个变量设置了 statement summary 的刷新时间,单位为秒 | +| tidb_store_limit | 这个变量用于限制 TiDB 同时向 TiKV 发送的请求的最大数量,0 表示没有限制 | +| tidb_txn_mode | 这个变量用于设置事务模式。TiDB v3.0 支持了悲观事务,自 v3.0.8 开始,默认使用[悲观事务模式](/pessimistic-transaction.md) | +| tidb_use_plan_baselines | 这个变量用于控制是否开启执行计划绑定功能,默认打开,可通过赋值 off 来关闭。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/sql-plan-management.md#创建绑定) | +| tidb_wait_split_region_finish | 由于打散 region 的时间可能比较长,主要由 PD 调度以及 TiKV 的负载情况所决定。这个变量用来设置在执行 `SPLIT REGION` 语句时,是否同步等待所有 region 都打散完成后再返回结果给客户端。默认 1 代表等待打散完成后再返回结果。0 代表不等待 Region 打散完成就返回 | +| tidb_wait_split_region_timeout | 这个变量用来设置 `SPLIT REGION` 语句的执行超时时间,单位是秒,默认值是 300 秒,如果超时还未完成,就返回一个超时错误 | +| tidb_window_concurrency | 这个变量用于设置 window 算子的并行度 | +| time_zone | 数据库所使用的时区。这个变量值可以写成时区偏移的形式,如 '-8:00',也可以写成一个命名时区,如 'America/Los_Angeles' | +| transaction_isolation | 这个变量用于设置事务隔离级别。TiDB 为了兼容 MySQL,支持可重复读 (`REPEATABLE-READ`),但实际的隔离级别是快照隔离。详情见[事务隔离级别](/transaction-isolation-levels.md) | +| version | 这个变量的值是 MySQL 的版本和 TiDB 的版本,例如 '5.7.25-TiDB-v4.0.0-beta.2-716-g25e003253' | +| version_comment | 这个变量的值是 TiDB 版本号的其他信息,例如 'TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible' | +| wait_timeout | 这个变量表示用户会话的空闲超时,单位为秒。`0` 代表没有时间限制 | +| windowing_use_high_precision | 这个变量用于控制计算窗口函数时是否采用高精度模式 | From 64a5c5cb3f432cf7d3a8fc5d9dcb9c7be44d7166 Mon Sep 17 00:00:00 2001 From: Yuanjia Zhang Date: Tue, 28 Jul 2020 11:33:32 +0800 Subject: [PATCH 53/56] fixup --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index 7e27907ab3db..7d30366dd444 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -332,7 +332,7 @@ mysql> select @@tidb_slow_log_threshold; | tidb_init_chunk_size | 这个变量用来设置执行过程中初始 chunk 的行数。默认值是 32,可设置的范围是 1~32 | | tidb_isolation_read_engines | 这个变量用于设置 TiDB 在读取数据时可以使用的存储引擎列表 | | tidb_low_resolution_tso | 这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据 | -| tidb_max_chunk_size | 最小值� | +| tidb_max_chunk_size | 这个变量用来设置执行过程中一个 chunk 最大的行数,设置过大可能引起缓存局部性的问题 | | tidb_max_delta_schema_count | 这个变量用来设置缓存 schema 版本信息(对应版本修改的相关 table IDs)的个数限制,可设置的范围 100 - 16384。此变量在 2.1.18 及之后版本支持 | | tidb_mem_quota_hashjoin | 这个变量用来设置 `HashJoin` 算子的内存使用阈值 | | tidb_mem_quota_indexlookupjoin | 这个变量用来设置 `IndexLookupJoin` 算子的内存使用阈值 | From 5b1fdde8ae7cbcd623e4c8d307daa7b15b445366 Mon Sep 17 00:00:00 2001 From: Yuanjia Zhang Date: Tue, 28 Jul 2020 12:27:01 +0800 Subject: [PATCH 54/56] address comments --- dynamic-config.md | 113 +++------------------------------------------- 1 file changed, 6 insertions(+), 107 deletions(-) diff --git a/dynamic-config.md b/dynamic-config.md index 7d30366dd444..f1201745a5a1 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -273,110 +273,9 @@ mysql> select @@tidb_slow_log_threshold; 支持在线修改的配置项和相应的系统变量如下: -| 变量 | 简介 | -| --- | --- | -| autocommit | 这个变量用来设置是否自动 Commit 事务 | -| ddl_slow_threshold | 耗时超过该阈值的 DDL 操作会被输出到日志,单位为毫秒 | -| foreign_key_checks | 为保持兼容,TiDB 对外键检查返回 OFF | -| hostname | 这个变量一个只读变量,表示 TiDB server 的主机名 | -| innodb_lock_wait_timeout | 悲观事务语句等锁时间,单位为秒 | -| last_plan_from_cache | 这个变量用来显示上一个 `execute` 语句所使用的执行计划是不是直接从 plan cache 中取出来的 | -| max_execution_time | 语句最长执行时间,单位为毫秒。默认值 (0) 表示无限制 | -| sql_select_limit | `SELECT` 语句返回的最大行数 | -| tidb_allow_batch_cop | 这个变量用于控制 TiDB 向 TiFlash 发送 coprocessor 请求的方式,有以下几种取值 | -| tidb_allow_remove_auto_inc | 这个变量用来控制是否允许通过 `ALTER TABLE MODIFY` 或 `ALTER TABLE CHANGE` 来移除某个列的 `AUTO_INCREMENT` 属性。默认 (`0`) 为不允许 | -| tidb_auto_analyze_end_time | 这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的结束时间。例如,只允许在凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下 | -| tidb_auto_analyze_ratio | 这个变量用来设置 TiDB 在后台自动执行 [`ANALYZE TABLE`](/sql-statements/sql-statement-analyze-table.md) 更新统计信息的阈值。`0.5` 指的是当表中超过 50% 的行被修改时,触发自动 ANALYZE 更新。可以指定 `tidb_auto_analyze_start_time` 和 `tidb_auto_analyze_end_time` 来限制自动 ANALYZE 的时 | -| tidb_auto_analyze_start_time | 这个变量用来设置一天中允许自动 ANALYZE 更新统计信息的开始时间。例如,只允许在凌晨 1:00 至 3:00 之间自动更新统计信息,可以设置如下 | -| tidb_backoff_lock_fast | 这个变量用来设置读请求遇到锁的 backoff 时间 | -| tidb_backoff_weight | 这个变量用来给 TiDB 的 `backoff` 最大时间增加权重,即内部遇到网络或其他组件(TiKV、PD)故障时,发送重试请求的最大重试时间。可以通过这个变量来调整最大重试时间,最小值为 1 | -| tidb_build_stats_concurrency | 这个变量用来设置 ANALYZE 语句执行时并发度 | -| tidb_capture_plan_baselines | 这个变量用于控制是否开启[自动捕获绑定](/sql-plan-management.md#自动捕获绑定-baseline-capturing)功能。该功能依赖 Statement Summary,因此在使用自动绑定之前需打开 Statement Summary 开关 | -| tidb_check_mb4_value_in_utf8 | 这个变量用来设置是否开启对字符集为 UTF8 类型的数据做合法性检查,默认值 `1` 表示开启检查。这个默认行为和 MySQL 是兼容的 | -| tidb_checksum_table_concurrency | 这个变量用来设置 `ADMIN CHECKSUM TABLE` 语句执行时扫描索引的并发度 | -| tidb_config | 这个变量是一个只读变量,用来获取当前 TiDB Server 的配置信息 | -| tidb_constraint_check_in_place | TiDB 支持乐观事务模型,即在执行写入时,假设不存在冲突。冲突检查是在最后 commit 提交时才去检查。这里的检查指 unique key 检查 | -| tidb_current_ts | 这个变量是一个只读变量,用来获取当前事务的时间戳 | -| tidb_ddl_error_count_limit | 这个变量用来控制 DDL 操作失败重试的次数。失败重试次数超过该参数的值后,会取消出错的 DDL 操作 | -| tidb_ddl_reorg_priority | 这个变量用来设置 `ADD INDEX` 操作 `re-organize` 阶段的执行优先级,可设置为 `PRIORITY_LOW`/`PRIORITY_NORMAL`/`PRIORITY_HIGH` | -| tidb_ddl_reorg_worker_cnt | 这个变量用来设置 DDL 操作 `re-organize` 阶段的并发度 | -| tidb_disable_txn_auto_retry | 这个变量用来设置是否禁用显式事务自动重试,设置为 `on` 时,不会自动重试,如果遇到事务冲突需要在应用层重试 | -| tidb_distsql_scan_concurrency | 这个变量用来设置 scan 操作的并发度 | -| tidb_enable_cascades_planner | 这个变量用于控制是否开启 cascades planner | -| tidb_enable_chunk_rpc | 这个变量用来设置是否启用 Coprocessor 的 `Chunk` 数据编码格式 | -| tidb_enable_fast_analyze | 这个变量用来控制是否启用统计信息快速分析功能。默认值 0 表示不开启 | -| tidb_enable_index_merge | 这个变量用于控制是否开启 index merge 功能 | -| tidb_enable_noop_functions | 这个变量用于控制是否开启 `get_lock` 和 `release_lock` 这两个没有实现的函数。需要注意的是,当前版本的 TiDB 这两个函数永远返回 1 | -| tidb_enable_slow_log | 这个变量用于控制是否开启 slow log 功能,默认开启 | -| tidb_enable_stmt_summary | 这个变量用来控制是否开启 statement summary 功能。如果开启,SQL 的耗时等执行信息将被记录到系统表 `information_schema.STATEMENTS_SUMMARY` 中,用于定位和排查 SQL 性能问题 | -| tidb_enable_streaming | 这个变量用来设置是否启用 Streaming | -| tidb_enable_table_partition | 这个变量用来设置是否开启 `TABLE PARTITION` 特性。目前变量支持以下三种值 | -| tidb_enable_telemetry | 这个变量用于动态地控制 TiDB 遥测功能是否开启。设置为 `0` 可以关闭 TiDB 遥测功能。当所有 TiDB 实例都设置 [`enable-telemetry`](/tidb-configuration-file.md#enable-telemetry-从-v402-版本开始引入) 为 `false` 时将忽略该系统变量并总是关闭 TiDB 遥测功能。参阅[遥测](/telemetry.md)了解该功能详情 | -| tidb_enable_vectorized_expression | 这个变量用于控制是否开启向量化执行 | -| tidb_enable_window_function | 这个变量用来控制是否开启窗口函数的支持。默认值 1 代表开启窗口函数的功能 | -| tidb_evolve_plan_baselines | 这个变量用于控制是否启用自动演进绑定功能。该功能的详细介绍和使用方法可以参考[自动演进绑定](/sql-plan-management.md#自动演进绑定-baseline-evolution) | -| tidb_evolve_plan_task_end_time | 这个变量用来设置一天中允许自动演进的结束时间 | -| tidb_evolve_plan_task_max_time | 该变量用于限制自动演进功能中,每个执行计划运行的最长时间,单位为秒 | -| tidb_evolve_plan_task_start_time | 这个变量用来设置一天中允许自动演进的开始时间 | -| tidb_expensive_query_time_threshold | 这个变量用来控制打印 expensive query 日志的阈值时间,单位是秒,默认值是 60 秒。expensive query 日志和慢日志的差别是,慢日志是在语句执行完后才打印,expensive query 日志可以把正在执行中的语句且执行时间超过阈值的语句及其相关信息打印出来 | -| tidb_force_priority | 这个变量用于改变 TiDB server 上执行的语句的默认优先级。例如,你可以通过设置该变量来确保正在执行 OLAP 查询的用户优先级低于正在执行 OLTP 查询的用户 | -| tidb_general_log | 这个变量用来设置是否在日志里记录所有的 SQL 语句 | -| tidb_hash_join_concurrency | 这个变量用来设置 hash join 算法的并发度 | -| tidb_hashagg_final_concurrency | 这个变量用来设置并行 hash aggregation 算法 final 阶段的执行并发度。对于聚合函数参数不为 distinct 的情况,HashAgg 分为 partial 和 final 阶段分别并行执行 | -| tidb_hashagg_partial_concurrency | 这个变量用来设置并行 hash aggregation 算法 partial 阶段的执行并发度。对于聚合函数参数不为 distinct 的情况,HashAgg 分为 partial 和 final 阶段分别并行执行 | -| tidb_index_join_batch_size | 这个变量用来设置 index lookup join 操作的 batch 大小,AP 类应用适合较大的值,TP 类应用适合较小的值 | -| tidb_index_lookup_concurrency | 这个变量用来设置 index lookup 操作的并发度,AP 类应用适合较大的值,TP 类应用适合较小的值 | -| tidb_index_lookup_join_concurrency | 这个变量用来设置 index lookup join 算法的并发度 | -| tidb_index_lookup_size | 这个变量用来设置 index lookup 操作的 batch 大小,AP 类应用适合较大的值,TP 类应用适合较小的值 | -| tidb_index_serial_scan_concurrency | 这个变量用来设置顺序 scan 操作的并发度,AP 类应用适合较大的值,TP 类应用适合较小的值 | -| tidb_init_chunk_size | 这个变量用来设置执行过程中初始 chunk 的行数。默认值是 32,可设置的范围是 1~32 | -| tidb_isolation_read_engines | 这个变量用于设置 TiDB 在读取数据时可以使用的存储引擎列表 | -| tidb_low_resolution_tso | 这个变量用来设置是否启用低精度 tso 特性,开启该功能之后新事务会使用一个每 2s 更新的 ts 来读取数据 | -| tidb_max_chunk_size | 这个变量用来设置执行过程中一个 chunk 最大的行数,设置过大可能引起缓存局部性的问题 | -| tidb_max_delta_schema_count | 这个变量用来设置缓存 schema 版本信息(对应版本修改的相关 table IDs)的个数限制,可设置的范围 100 - 16384。此变量在 2.1.18 及之后版本支持 | -| tidb_mem_quota_hashjoin | 这个变量用来设置 `HashJoin` 算子的内存使用阈值 | -| tidb_mem_quota_indexlookupjoin | 这个变量用来设置 `IndexLookupJoin` 算子的内存使用阈值 | -| tidb_mem_quota_indexlookupreader | 这个变量用来设置 `IndexLookupReader` 算子的内存使用阈值 | -| tidb_mem_quota_mergejoin | 这个变量用来设置 `MergeJoin` 算子的内存使用阈值 | -| tidb_mem_quota_nestedloopapply | 这个变量用来设置 `NestedLoopApply` 算子的内存使用阈值 | -| tidb_mem_quota_query | 这个变量用来设置一条查询语句的内存使用阈值 | -| tidb_mem_quota_sort | 这个变量用来设置 `Sort` 算子的内存使用阈值 | -| tidb_mem_quota_topn | 这个变量用来设置 `TopN` 算子的内存使用阈值 | -| tidb_metric_query_range_duration | 这个变量设置了查询 `METRIC_SCHEMA` 时生成的 Prometheus 语句的 range duration,单位为秒 | -| tidb_metric_query_step | 这个变量设置了查询 `METRIC_SCHEMA` 时生成的 Prometheus 语句的 step,单位为秒 | -| tidb_opt_agg_push_down | 这个变量用来设置优化器是否执行聚合函数下推到 Join 之前的优化操作 | -| tidb_opt_correlation_exp_factor | 当交叉估算方法不可用时,会采用启发式估算方法。这个变量用来控制启发式方法的行为。当值为 0 时不用启发式估算方法,大于 0 时,该变量值越大,启发式估算方法越倾向 index scan,越小越倾向 table scan | -| tidb_opt_correlation_threshold | 这个变量用来设置优化器启用交叉估算 row count 方法的阈值。如果列和 handle 列之间的顺序相关性超过这个阈值,就会启用交叉估算方法 | -| tidb_opt_distinct_agg_push_down | 这个变量用来设置优化器是否执行带有 `Distinct` 的聚合函数(比如 `select count(distinct a) from t`)下推到 Coprocessor 的优化操作 | -| tidb_opt_insubq_to_join_and_agg | 这个变量用来设置是否开启优化规则:将子查询转成 join 和 aggregation | -| tidb_opt_write_row_id | 这个变量用来设置是否允许 `INSERT`、`REPLACE` 和 `UPDATE` 操作 `_tidb_rowid` 列,默认是不允许操作。该选项仅用于 TiDB 工具导数据时使用 | -| tidb_projection_concurrency | 这个变量用来设置 `Projection` 算子的并发度 | -| tidb_query_log_max_len | 最长的 SQL 输出长度。当语句的长度大于 query-log-max-len,将会被截断输出 | -| tidb_pprof_sql_cpu | 这个变量用来控制是否在 profile 输出中标记出对应的 SQL 语句,用于定位和排查性能问题 | -| tidb_record_plan_in_slow_log | 这个变量用于控制是否在 slow log 里包含慢查询的执行计划 | -| tidb_replica_read | 这个变量用于控制 TiDB 读取数据的位置,有以下三个选择 | -| tidb_retry_limit | 这个变量用来设置最大重试次数。一个事务执行中遇到可重试的错误(例如事务冲突、事务提交过慢或表结构变更)时,会根据该变量的设置进行重试。注意当 `tidb_retry_limit = 0` 时,也会禁用自动重试 | -| tidb_row_format_version | 控制新保存数据的表数据格式版本。TiDB v4.0 中默认使用版本号为 2 的[新表数据格式](https://github.com/pingcap/tidb/blob/master/docs/design/2018-07-19-row-format.md)保存新数据 | -| tidb_scatter_region | TiDB 默认会在建表时为新表分裂 Region。开启该变量后,会在建表语句执行时,同步打散刚分裂出的 Region。适用于批量建表后紧接着批量写入数据,能让刚分裂出的 Region 先在 TiKV 分散而不用等待 PD 进行调度。为了保证后续批量写入数据的稳定性,建表语句会等待打散 Region 完成后再返回建表成功,建表语句执行时间会是关闭该变量的数倍 | -| tidb_skip_isolation_level_check | 开启这个开关之后,如果对 `tx_isolation` 赋值一个 TiDB 不支持的隔离级别,不会报错,有助于兼容其他设置了(但不依赖于)不同隔离级别的应用 | -| tidb_skip_utf8_check | 这个变量用来设置是否跳过 UTF-8 字符的验证 | -| tidb_slow_log_threshold | 输出慢日志的耗时阈值。当查询大于这个值,就会当做是一个慢查询,输出到慢查询日志。默认为 300ms | -| tidb_slow_query_file | 查询 `INFORMATION_SCHEMA.SLOW_QUERY` 只会解析配置文件中 `slow-query-file` 设置的慢日志文件名,默认是 "tidb-slow.log"。但如果想要解析其他的日志文件,可以通过设置 session 变量 `tidb_slow_query_file` 为具体的文件路径,然后查询 `INFORMATION_SCHEMA.SLOW_QUERY` 就会按照设置的路径去解析慢日志文件。更多详情可以参考 [SLOW_QUERY 文档](/identify-slow-queries.md) | -| tidb_snapshot | 这个变量用来设置当前会话期待读取的历史数据所处时刻。比如当设置为 `"2017-11-11 20:20:20"` 时或者一个 TSO 数字 "400036290571534337",当前会话将能读取到该时刻的数据 | -| tidb_stmt_summary_history_size | 这个变量设置了 statement summary 的历史记录容量 | -| tidb_stmt_summary_internal_query | 这个变量用来控制是否在 statement summary 中包含 TiDB 内部 SQL 的信息 | -| tidb_stmt_summary_max_sql_length | 这个变量控制 statement summary 显示的 SQL 字符串长度 | -| tidb_stmt_summary_max_stmt_count | 这个变量设置了 statement summary 在内存中保存的语句的最大数量 | -| tidb_stmt_summary_refresh_interval | 这个变量设置了 statement summary 的刷新时间,单位为秒 | -| tidb_store_limit | 这个变量用于限制 TiDB 同时向 TiKV 发送的请求的最大数量,0 表示没有限制 | -| tidb_txn_mode | 这个变量用于设置事务模式。TiDB v3.0 支持了悲观事务,自 v3.0.8 开始,默认使用[悲观事务模式](/pessimistic-transaction.md) | -| tidb_use_plan_baselines | 这个变量用于控制是否开启执行计划绑定功能,默认打开,可通过赋值 off 来关闭。关于执行计划绑定功能的使用可以参考[执行计划绑定文档](/sql-plan-management.md#创建绑定) | -| tidb_wait_split_region_finish | 由于打散 region 的时间可能比较长,主要由 PD 调度以及 TiKV 的负载情况所决定。这个变量用来设置在执行 `SPLIT REGION` 语句时,是否同步等待所有 region 都打散完成后再返回结果给客户端。默认 1 代表等待打散完成后再返回结果。0 代表不等待 Region 打散完成就返回 | -| tidb_wait_split_region_timeout | 这个变量用来设置 `SPLIT REGION` 语句的执行超时时间,单位是秒,默认值是 300 秒,如果超时还未完成,就返回一个超时错误 | -| tidb_window_concurrency | 这个变量用于设置 window 算子的并行度 | -| time_zone | 数据库所使用的时区。这个变量值可以写成时区偏移的形式,如 '-8:00',也可以写成一个命名时区,如 'America/Los_Angeles' | -| transaction_isolation | 这个变量用于设置事务隔离级别。TiDB 为了兼容 MySQL,支持可重复读 (`REPEATABLE-READ`),但实际的隔离级别是快照隔离。详情见[事务隔离级别](/transaction-isolation-levels.md) | -| version | 这个变量的值是 MySQL 的版本和 TiDB 的版本,例如 '5.7.25-TiDB-v4.0.0-beta.2-716-g25e003253' | -| version_comment | 这个变量的值是 TiDB 版本号的其他信息,例如 'TiDB Server (Apache License 2.0) Community Edition, MySQL 5.7 compatible' | -| wait_timeout | 这个变量表示用户会话的空闲超时,单位为秒。`0` 代表没有时间限制 | -| windowing_use_high_precision | 这个变量用于控制计算窗口函数时是否采用高精度模式 | +| 配置项 | 对应变量 | 简介 | +| --- | --- | --- | +| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | +| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | +| log.slow-threshold | tidb_slow_log_threshold | 慢日志阈值 | +| log.expensive-threshold | tidb_expensive_query_time_threshold | expensive 查询阈值 | From cdfe6f3c76c8910a8a6dbe8bb14f32090055dc6f Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Tue, 28 Jul 2020 20:19:35 +0800 Subject: [PATCH 55/56] Update dynamic-config.md --- dynamic-config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic-config.md b/dynamic-config.md index f1201745a5a1..d0b2ad3b14a3 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -3,7 +3,7 @@ title: 在线修改集群配置 summary: 介绍在线修改集群配置的功能。 --- -# 在线配置变更 +# 在线修改集群配置 > **注意:** > From df10371bb061a34e7c75fd3a539134e7ebfb66dc Mon Sep 17 00:00:00 2001 From: TomShawn <41534398+TomShawn@users.noreply.github.com> Date: Thu, 30 Jul 2020 16:26:02 +0800 Subject: [PATCH 56/56] refine language --- TOC.md | 2 +- dynamic-config.md | 78 +++++++++++++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 30 deletions(-) diff --git a/TOC.md b/TOC.md index cb6452a4ebd9..7fd9e213f484 100644 --- a/TOC.md +++ b/TOC.md @@ -75,7 +75,7 @@ + [TiFlash 常用运维操作](/tiflash/maintain-tiflash.md) + [TiUP 常用运维操作](/maintain-tidb-using-tiup.md) + [Ansible 常用运维操作](/maintain-tidb-using-ansible.md) - + [动态配置变更](/dynamic-config.md) + + [在线修改集群配置](/dynamic-config.md) + 监控与告警 + [监控框架概述](/tidb-monitoring-framework.md) + [监控 API](/tidb-monitoring-api.md) diff --git a/dynamic-config.md b/dynamic-config.md index d0b2ad3b14a3..b3a63d35bd23 100644 --- a/dynamic-config.md +++ b/dynamic-config.md @@ -9,13 +9,15 @@ summary: 介绍在线修改集群配置的功能。 > > 该功能目前是实验性阶段,不建议在生产环境中使用。 -在线配置变更主要是通过利用 SQL 对包括 TiDB、TiKV 以及 PD 在内的各组件的配置进行在线更新。用户可以通过利用在线配置变更对各组件进行性能调优而无需重启集群组件。但目前在线修改 TiDB 实例配置的方式和其他组件(TiKV、PD)有所不同。 +在线配置变更主要是通过利用 SQL 对包括 TiDB、TiKV 以及 PD 在内的各组件的配置进行在线更新。用户可以通过在线配置变更对各组件进行性能调优而无需重启集群组件。但目前在线修改 TiDB 实例配置的方式和修改其他组件(TiKV、PD)的有所不同。 ## 常用操作 ### 查看实例配置 -可以通过 SQL `show config` 来直接查看集群所有实例的配置信息,结果如下: +可以通过 SQL语句 `show config` 来直接查看集群所有实例的配置信息,结果如下: + +{{< copyable "sql" >}} ```sql show config; @@ -39,6 +41,8 @@ show config; 还可以根据对应的字段进行过滤,如: +{{< copyable "sql" >}} + ```sql show config where type='tidb' show config where instance in (...) @@ -50,30 +54,38 @@ show config where type='tikv' and name='log-level' > **注意:** > -> 在线修改 TiKV 配置项后,同时会自动修改 TiKV 的配置文件。但还需要使用 `tiup edit-config` 修改对应的配置项,否则 `upgrade` `reload` 等运维操作会将在线修改配置后的结果覆盖。修改配置的操作请参考:[修改配置](/maintain-tidb-using-tiup.md#修改配置参数),`tiup edit-config` 后不需要执行 `tiup reload` 操作。 +> 在线修改 TiKV 配置项后,同时会自动修改 TiKV 的配置文件。但还需要使用 `tiup edit-config` 命令来修改对应的配置项,否则 `upgrade` 和 `reload` 等运维操作会将在线修改配置后的结果覆盖。修改配置的操作请参考:[使用 TiUP 修改配置](/maintain-tidb-using-tiup.md#修改配置参数)。执行 `tiup edit-config` 后不需要执行 `tiup reload` 操作。 执行 SQL 语句 `set config`,可以结合实例地址或组件类型来修改单个实例配置或全部实例配置,如: 修改全部 TiKV 实例配置: +{{< copyable "sql" >}} + ```sql set config tikv log.level="info" ``` 修改单个 TiKV 实例配置: +{{< copyable "sql" >}} + ```sql set config "127.0.0.1:20180" log.level="info" ``` 设置成功会返回 `Query OK`: +{{< copyable "sql" >}} + ```sql Query OK, 0 rows affected (0.01 sec) ``` 在批量修改时如果有错误发生,会以 warning 的形式返回: +{{< copyable "sql" >}} + ```sql set config tikv log-level='warn'; ``` @@ -82,6 +94,8 @@ set config tikv log-level='warn'; Query OK, 0 rows affected, 1 warning (0.04 sec) ``` +{{< copyable "sql" >}} + ```sql show warnings; ``` @@ -95,17 +109,17 @@ show warnings; 1 row in set (0.00 sec) ``` -批量修改配置不保证原子性,可能出现某些实例成功,而某些失败。如使用 `set tikv key=val` 修改整个 TiKV 集群配置时,可能有部分实例失败,请使用 `show warnings` 进行查看。 +批量修改配置不保证原子性,可能出现某些实例成功,而某些失败的情况。如使用 `set tikv key=val` 命令修改整个 TiKV 集群配置时,可能有部分实例失败,请执行 `show warnings` 进行查看。 -如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。对于由于网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 +如遇到部分修改失败的情况,需要重新执行对应的修改语句,或通过修改单个实例的方式完成修改。如果因网络或者机器故障等原因无法访问到的 TiKV,需要等到恢复后再次进行修改。 -针对 TiKV 可在线修改的配置项,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的配置为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`,`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``raftstore.raft-log-gc-size-limit` ``; +针对 TiKV 可在线修改的配置项,如果成功修改后,修改的结果会被持久化到配置文件中,后续以配置文件中的配置为准。某些配置项名称可能和 TiDB 预留关键字冲突,如 `limit`、`key` 等,对于此类配置项,需要用反引号 ``` ` ``` 包裹起来,如 ``` `raftstore.raft-log-gc-size-limit` ```。 -支持配置项列表如下: +支持的配置项列表如下: | 配置项 | 简介 | | --- | --- | -| raftstore.sync-log | 数据、log 落盘是否 sync | +| raftstore.sync-log | 数据、log 落盘是否同步 | | raftstore.raft-entry-max-size | 单个日志最大大小 | | raftstore.raft-log-gc-tick-interval | 删除 Raft 日志的轮询任务调度间隔时间 | | raftstore.raft-log-gc-threshold | 允许残余的 Raft 日志个数,软限制 | @@ -137,13 +151,13 @@ show warnings; | raftstore.cleanup-import-sst-interval | 触发检查过期 SST 文件的时间间隔 | | raftstore.local-read-batch-size | 一轮处理读请求的最大个数 | | raftstore.hibernate-timeout | 启动后进入静默状态前需要等待的最短时间,在该时间段内不会进入静默状态(未 release)| -| coprocessor.split-region-on-table | 开启按 table 分裂 Region的开关 | +| coprocessor.split-region-on-table | 开启按 table 分裂 Region 的开关 | | coprocessor.batch-split-limit | 批量分裂 Region 的阈值 | -| coprocessor.region-max-size | Region 容量空间最大值 | +| coprocessor.region-max-size | Region 容量空间的最大值 | | coprocessor.region-split-size | 分裂后新 Region 的大小 | | coprocessor.region-max-keys | Region 最多允许的 key 的个数 | | coprocessor.region-split-keys | 分裂后新 Region 的 key 的个数 | -| pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的等待的最长时间 | +| pessimistic-txn.wait-for-lock-timeout | 悲观事务遇到锁后的最长等待时间 | | pessimistic-txn.wake-up-delay-duration | 悲观事务被重新唤醒的时间 | | pessimistic-txn.pipelined | 是否开启流水线式加悲观锁流程 | | gc.ratio-threshold | 跳过 Region GC 的阈值(GC 版本个数/key 个数)| @@ -155,8 +169,8 @@ show warnings; | {db-name}.max-background-jobs | RocksDB 后台线程个数 | | {db-name}.max-open-files | RocksDB 可以打开的文件总数 | | {db-name}.compaction-readahead-size | Compaction 时候 readahead 的大小 | -| {db-name}.bytes-per-sync | 异步 Sync 限速速率 | -| {db-name}.wal-bytes-per-sync | WAL Sync 限速速率 | +| {db-name}.bytes-per-sync | 异步同步的限速速率 | +| {db-name}.wal-bytes-per-sync | WAL 同步的限速速率 | | {db-name}.writable-file-max-buffer-size | WritableFileWrite 所使用的最大的 buffer 大小 | | {db-name}.{cf-name}.block-cache-size | block cache size 大小 | | {db-name}.{cf-name}.write-buffer-size | memtable 大小 | @@ -172,23 +186,25 @@ show warnings; | {db-name}.{cf-name}.soft-pending-compaction-bytes-limit | pending compaction bytes 的软限制 | | {db-name}.{cf-name}.hard-pending-compaction-bytes-limit | pending compaction bytes 的硬限制 | | {db-name}.{cf-name}.titan.blob-run-mode | 处理 blob 文件的模式 | -| storage.block-cache.capacity | 共享 block cache 的大小(自 4.0.3 起支持) | -| backup.num-threads | backup 线程的数量(自 4.0.3 起支持) | -| split.qps-threshold | 对 Region 执行 load-base-split 的阈值,如果读 qps 连续 10s 内均超过这个值,则进行 split | -| split.split-balance-score | load-base-split 控制参数,确保 split 后左右访问尽量均匀 | -| split.split-contained-score | load-base-split 控制参数,尽量减少 split 后跨 region 访问 | +| storage.block-cache.capacity | 共享 block cache 的大小(自 v4.0.3 起支持) | +| backup.num-threads | backup 线程的数量(自 v4.0.3 起支持) | +| split.qps-threshold | 对 Region 执行 load-base-split 的阈值。如果读 QPS 连续 10 秒内均超过这个值,则进行 split | +| split.split-balance-score | load-base-split 的控制参数,确保 split 后左右访问尽量均匀 | +| split.split-contained-score | load-base-split 的控制参数,尽量减少 split 后跨 Region 访问 | -上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的是 RocksDB 相关的配置项。`db-name` 的取值可为 `rocksdb`,`raftdb`。 +上述前缀为 `{db-name}` 或 `{db-name}.{cf-name}` 的是 RocksDB 相关的配置项。`db-name` 的取值可为 `rocksdb` 或 `raftdb`。 -- 当 `db-name` 为 `rocksdb` 时,cf-name 的取值有: `defaultcf`,`writecf`,`lockcf`,`raftcf`; -- 当 `db-name` 为 `raftdb` 时,cf-name 的取值有: `defaultcf`。 +- 当 `db-name` 为 `rocksdb` 时,`cf-name` 的可取值有:`defaultcf`、`writecf`、`lockcf`、`raftcf`; +- 当 `db-name` 为 `raftdb` 时,`cf-name` 的可取值有:`defaultcf`。 -具体配置项意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) +具体配置项的意义可参考 [TiKV 配置文件描述](/tikv-configuration-file.md) ### 在线修改 PD 配置 PD 暂不支持单个实例拥有独立配置。所有实例共享一份配置,可以通过下列方式修改 PD 的配置项: +{{< copyable "sql" >}} + ```sql set config pd log.level="info" ``` @@ -199,7 +215,7 @@ set config pd log.level="info" Query OK, 0 rows affected (0.01 sec) ``` -针对 PD 可在线修改的配置项,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的配置为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ``` ` ``` 包裹起来,如 ``schedule.`leader-schedule-limit` ``; +针对 PD 可在线修改的配置项,成功修改后则会持久化到 etcd 中,不会对配置文件进行持久化,后续以 etcd 中的配置为准。同上,若和 TiDB 预留关键字冲突,需要用反引号 ``` ` ``` 包裹此类配置项,例如 ``` `schedule.leader-schedule-limit` ```。 支持配置项列表如下: @@ -242,14 +258,16 @@ Query OK, 0 rows affected (0.01 sec) | pd-server.dashboard-address | 用于设置 dashboard 的地址 | | replication-mode.replication-mode | 备份的模式 | -具体配置项意义可参考 [PD 配置文件描述](/pd-configuration-file.md) +具体配置项意义可参考 [PD 配置文件描述](/pd-configuration-file.md)。 ### 在线修改 TiDB 配置 -在线修改 TiDB 配置的方式和 TiKV/PD 有所不同,我们通过 [SQL 变量](/system-variables.md) 来完成。 +在线修改 TiDB 配置的方式和 TiKV/PD 有所不同,用户通过 [SQL 变量](/system-variables.md)来完成修改。 下面例子展示了如何通过变量 `tidb_slow_log_threshold` 在线修改配置项 `slow-threshold`。`slow-threshold` 默认值是 200 毫秒,可以通过设置 `tidb_slow_log_threshold` 将其修改为 200 毫秒: +{{< copyable "sql" >}} + ```sql set tidb_slow_log_threshold = 200; ``` @@ -258,8 +276,10 @@ set tidb_slow_log_threshold = 200; Query OK, 0 rows affected (0.00 sec) ``` +{{< copyable "sql" >}} + ```sql -mysql> select @@tidb_slow_log_threshold; +select @@tidb_slow_log_threshold; ``` ```sql @@ -271,11 +291,11 @@ mysql> select @@tidb_slow_log_threshold; 1 row in set (0.00 sec) ``` -支持在线修改的配置项和相应的系统变量如下: +支持在线修改的配置项和相应的 TiDB 系统变量如下: | 配置项 | 对应变量 | 简介 | | --- | --- | --- | -| mem-quota-query | tidb_mem_quota_query | Query 使用的内存限制 | -| log.enable-slow-log | tidb_enable_slow_log | 慢日志开关 | +| 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 | expensive 查询阈值 |