###############
线上目录配置:
[work@10.10.10.10 tidb-4000]$ tree . ├── bin │ └── tidb-server ├── conf │ ├── cluster.conf │ └── tidb.toml ├── log │ ├── tidb-2021-04-08T00-47-00.241.log │ ├── tidb-2021-04-18T00-56-52.252.log │ ├── tidb-2021-05-02T00-45-05.759.log │ ├── tidb-2021-05-12T00-53-14.403.log │ ├── tidb-2021-06-03T01-46-40.885.log │ ├── tidb-2021-06-09T05-22-31.200.log │ ├── tidb-2021-06-09T06-10-51.666.log │ ├── tidb-2021-06-09T07-58-11.618.log │ ├── tidb-2021-06-09T10-04-06.202.log │ ├── tidb-2021-06-09T10-55-25.922.log │ ├── tidb-2021-06-09T11-30-06.829.log │ ├── tidb-2021-06-09T12-39-52.668.log │ ├── tidb-2021-06-09T13-37-27.505.log │ ├── tidb-2021-06-09T14-29-26.031.log │ ├── tidb-2021-06-09T15-26-53.880.log │ ├── tidb-2021-06-13T00-54-49.814.log │ ├── tidb-2021-07-02T00-51-44.270.log │ ├── tidb-2021-09-01T15-02-37.474.log │ ├── tidb.log │ ├── tidb_slow-2021-08-21T14-05-26.423.log │ ├── tidb_slow.log │ └── tidb_error.log └── scripts └── tidb_start.sh
启动脚本:
[work@10.10.10.10 tidb-4000]$ cat scripts/tidb_start.sh #!/bin/bash set -e # WARNING: This file was auto-generated. Do not edit! # All your edit might be overwritten! DEPLOY_DIR=/home/work/tidb/tidb-4000 cd "${DEPLOY_DIR}" || exit 1 exec numactl --cpunodebind=1 --membind=1 env GODEBUG=madvdontneed=1 bin/tidb-server -P 4000 --status="10080" --host="0.0.0.0" --advertise-address="10.10.10.10" --store="tikv" --path="10.10.10.20:2379,10.10.10.21:2379,10.10.10.22:2379" --log-slow-query="log/tidb_slow.log" --config=conf/tidb.toml --log-file="/home/work/tidb/tidb-4000/log/tidb.log" 2>> "/home/work/tidb/tidb-4000/log/tidb_error.log"
tidb.toml文件:
[work@10.10.10.10 tidb-4000]$ cat conf/tidb.toml # WARNING: This file is auto-generated. Do not edit! All your modification will be overwritten! # You can use 'tiup cluster edit-config' and 'tiup cluster reload' to update the configuration # All configuration items you want to change can be added to: # server_configs: # tidb: # aa.b1.c3: value # aa.b2.c4: value [binlog] enable = false ignore-error = false [log] slow-query-file = "tidb-slow.log" slow-threshold = 300 [performance] max-procs = 20 [pessimistic-txn] enable = false max-retry-count = 256 [txn-local-latches] capacity = 2048000 enabled = true
max-server-connections
- TiDB 中同时允许的最大客户端连接数,用于资源控制。
- 默认值:0
- 默认情况下,TiDB 不限制客户端连接数。当本配置项的值大于
0
且客户端连接数到达此值时,TiDB 服务端将会拒绝新的客户端连接。
max-index-length
- 用于设置新建索引的长度限制。
- 默认值:3072
- 单位:Byte
- 目前的合法值范围
[3072, 3072*4]
。MySQL 和 TiDB v3.0.11 之前版本(不包含 v3.0.11)没有此配置项,不过都对新建索引的长度做了限制。MySQL 对此的长度限制为3072
,TiDB 在 v3.0.7 以及之前版本该值为3072*4
,在 v3.0.7 之后版本(包含 v3.0.8、v3.0.9 和 v3.0.10)的该值为3072
。为了与 MySQL 和 TiDB 之前版本的兼容,添加了此配置项。
table-column-count-limit
从 v5.0 版本开始引入
- 用于设置单个表中列的数量限制
- 默认值:1017
- 目前的合法值范围
[1017, 4096]
。
index-limit
从 v5.0 版本开始引入
- 用于设置单个表中索引的数量限制
- 默认值:64
- 目前的合法值范围
[64, 512]
。
compatible-kill-query
- 设置
KILL
语句的兼容性。 - 默认值:false
- TiDB 中
KILL xxx
的行为和 MySQL 中的行为不相同。为杀死一条查询,在 TiDB 里需要加上TIDB
关键词,即KILL TIDB xxx
。但如果把compatible-kill-query
设置为 true,则不需要加上TIDB
关键词。 - 这种区别很重要,因为当用户按下 Ctrl+C 时,MySQL 命令行客户端的默认行为是:创建与后台的新连接,并在该新连接中执行
KILL
语句。如果负载均衡器或代理已将该新连接发送到与原始会话不同的 TiDB 服务器实例,则该错误会话可能被终止,从而导致使用 TiDB 集群的业务中断。只有当您确定在KILL
语句中引用的连接正好位于KILL
语句发送到的服务器上时,才可以启用compatible-kill-query
。
txn-entry-size-limit
从 v5.0 版本开始引入
- TiDB 单行数据的大小限制
- 默认值:6291456
- 单位:Byte
- 事务中单个 key-value 记录的大小限制。若超出该限制,TiDB 将会返回
entry too large
错误。该配置项的最大值不超过125829120
(表示 120MB)。 - 注意,TiKV 有类似的限制。若单个写入请求的数据量大小超出
raft-entry-max-size
,默认为 8MB,TiKV 会拒绝处理该请求。当表的一行记录较大时,需要同时修改这两个配置。
txn-total-size-limit
- TiDB 单个事务大小限制
- 默认值:104857600
- 单位:Byte
- 单个事务中,所有 key-value 记录的总大小不能超过该限制。该配置项的最大值不超过
10737418240
(表示 10GB)。注意,如果使用了以Kafka
为下游消费者的binlog
,如:arbiter
集群,该配置项的值不能超过1073741824
(表示 1GB),因为这是Kafka
的处理单条消息的最大限制,超过该限制Kafka
将会报错。
max-txn-ttl
- 单个事务持锁的最长时间,超过该时间,该事务的锁可能会被其他事务清除,导致该事务无法成功提交。
- 默认值:3600000
- 单位:毫秒
- 超过此时间的事务只能执行提交或者回滚,提交不一定能够成功。
committer-concurrency
- 在单个事务的提交阶段,用于执行提交操作相关请求的 goroutine 数量
- 默认值:128
- 若提交的事务过大,事务提交时的流控队列等待耗时可能会过长,可以通过调大该配置项来加速提交。
stmt-count-limit
- TiDB 单个事务允许的最大语句条数限制。
- 默认值:5000
- 在一个事务中,超过
stmt-count-limit
条语句后还没有 rollback 或者 commit,TiDB 将会返回statement count 5001 exceeds the transaction limitation, autocommit = false
错误。该限制只在可重试的乐观事务中生效,如果使用悲观事务或者关闭了事务重试,事务中的语句数将不受此限制。
##########
###############