###############
線上目錄配置:
[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
錯誤。該限制只在可重試的樂觀事務中生效,如果使用悲觀事務或者關閉了事務重試,事務中的語句數將不受此限制。
##########
###############