TiDB 配置文件比命令行参数支持更多的选项。你可以在 config/config.toml.example 找到默认值的配置文件,重命名为 config.toml
即可。本文档只介绍未包含在命令行参数中的参数。
split-table
token-limit
18446744073709551615
4294967295
oom-use-tmp-storage
tmp-storage-path
<操作系统临时文件夹>/<操作系统用户ID>_tidb/MC4wLjAuMDo0MDAwLzAuMC4wLjA6MTAwODA=/tmp-storage
。其中 MC4wLjAuMDo0MDAwLzAuMC4wLjA6MTAwODA=
是对 :/:
进行 Base64
编码的输出结果。oom-use-tmp-storage
为 true 时有效。tmp-storage-quota
tmp-storage-path
存储使用的限额。tmp-storage-quota
时,当前 SQL 操作会被取消,并返回 Out Of Global Storage Quota!
错误。tmp-storage-quota
小于 0 时则没有上述检查与限制。tmp-storage-path
的剩余可用容量低于 tmp-storage-quota
所定义的值时,TiDB server 启动时将会报出错误并退出。lease
compatible-kill-query
KILL
语句的兼容性。KILL xxx
的行为和 MySQL 中的行为不相同。为杀死一条查询,在 TiDB 里需要加上 TIDB
关键词,即 KILL TIDB xxx
。但如果把 compatible-kill-query
设置为 true,则不需要加上 TIDB
关键词。KILL
语句。如果负载均衡器或代理已将该新连接发送到与原始会话不同的 TiDB 服务器实例,则该错误会话可能被终止,从而导致使用 TiDB 集群的业务中断。只有当您确定在 KILL
语句中引用的连接正好位于 KILL
语句发送到的服务器上时,才可以启用 compatible-kill-query
。check-mb4-value-in-utf8
treat-old-version-utf8-as-utf8mb4
alter-primary-key
(已废弃)注意
该配置项已被废弃,目前仅在 @@tidb_enable_clustered_index
取值为 INT_ONLY
时生效。如果需要增删主键,请在建表时使用 NONCLUSTERED
关键字代替。要了解关于 CLUSTERED
主键的详细信息,请参考聚簇索引。
server-version
VERSION()
时。5.7.${mysql_latest_minor_version}-TiDB-${tidb_version}
。repair-mode
repair-table-list
名单中坏表的加载。repair-table-list
repair-mode
为 true 时使用,用于列出实例中需要修复的坏表的名单,该名单的写法为 ["db.table1","db.table2", ……]。new_collations_enabled_on_first_bootstrap
max-server-connections
0
且客户端连接数到达此值时,TiDB 服务端将会拒绝新的客户端连接。max-index-length
[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, 4096]
。index-limit
从 v5.0 版本开始引入[64, 512]
。enable-telemetry
从 v4.0.2 版本开始引入false
,那么将完全禁用 TiDB 遥测功能,且忽略 tidb_enable_telemetry 系统变量。参阅遥测了解该功能详情。enable-tcp4-only
从 v5.0 版本开始引入enable-enum-length-limit
从 v5.0 版本开始引入ENUM
元素和单个 SET
元素的最大长度true
时,ENUM
和 SET
单个元素的最大长度为 255 个字符,与 MySQL 8 兼容;当该配置项值为 false
时,不对单个元素的长度进行限制,与 TiDB v5.0 之前的版本兼容。graceful-wait-before-shutdown
从 v5.0 版本开始引入enable-global-kill
从 v6.1.0 版本开始引入true
时,KILL
语句和 KILL TIDB
语句均能跨节点终止查询或连接,无需担心错误地终止其他查询或连接。当你使用客户端连接到任何一个 TiDB 节点执行 KILL
语句或 KILL TIDB
语句时,该语句会被转发给对应的 TiDB 节点。当客户端和 TiDB 中间有代理时,KILL
语句或 KILL TIDB
语句也会被转发给对应的 TiDB 节点执行。目前暂时不支持在 enable-global-kill
为 true
时用 MySQL 命令行 ctrl+c 终止查询或连接。关于 KILL
语句的更多信息,请参考 KILL [TIDB]。enable-forwarding
从 v5.0.0 版本开始引入日志相关的配置项。
level
format
enable-timestamp
注意
disable-timestamp
仍然有效,但如果和 enable-timestamp
配置的值在语义上冲突(例如在配置中把 enable-timestamp
和 disable-timestamp
同时设置为 true
),则 TiDB 会忽略 disable-timestamp
的值。disable-timestamp
来决定是否在日志中输出时间戳,此时 enable-timestamp
的值为 null
。disable-timestamp
配置项将被彻底移除,请废弃 disable-timestamp
的用法,使用语义上更易于理解的 enable-timestamp
。enable-slow-log
true
或 false
来启用或或禁用慢查询日志。slow-query-file
slow-threshold
record-plan-in-slow-log
expensive-threshold
expensive
操作的行数阈值。expensive
查询,并输出一个前缀带有 [EXPENSIVE_QUERY]
的日志。日志文件相关的配置项。
filename
max-size
max-days
max-days
之后 TiDB 会清理过期的日志文件。max-backups
安全相关配置。
enable-sem
false
ssl-ca
--ssl-cert
、--ssl-key
选项时,TiDB 将在客户端出示证书的情况下根据该选项指定的受信任的 CA 列表验证客户端证书。若验证失败,则连接会被终止。ssl-cert
--ssl-key
选项时,TiDB 将接受(但不强制)客户端使用 TLS 安全地连接到 TiDB。ssl-key
--ssl-cert
所指定的证书的私钥。cluster-ssl-ca
cluster-ssl-cert
cluster-ssl-key
spilled-file-encryption-method
"plaintext"
,表示不进行加密。"plaintext"
、"aes128-ctr"
。auto-tls
false
tls-version
"TLSv1.0"
、"TLSv1.1"
、"TLSv1.2"
和 "TLSv1.3"
性能相关配置。
max-procs
server-memory-quota
从 v4.0.9 版本开始引入警告
server-memory-quota
目前为实验性特性,不建议在生产环境中使用。
memory-usage-alarm-ratio
从 v4.0.9 版本开始引入0
到 1
。如果配置该选项为 0
或 1
,则表示关闭内存阈值报警功能。memory-usage-alarm-ratio * 系统内存大小
;如果 server-memory-quota
被设置且大于 0,则内存报警阈值为 memory-usage-alarm-ratio * server-memory-quota
。tidb-server has the risk of OOM
的日志。txn-entry-size-limit
从 v5.0 版本开始引入entry too large
错误。该配置项的最大值不超过 125829120
(表示 120MB)。txn-total-size-limit
1099511627776
(表示 1TB)。注意,如果使用了以 Kafka
为下游消费者的 binlog
,如:arbiter
集群,该配置项的值不能超过 1073741824
(表示 1GB),因为这是 Kafka
的处理单条消息的最大限制,超过该限制 Kafka
将会报错。max-txn-ttl
stmt-count-limit
stmt-count-limit
条语句后还没有 rollback 或者 commit,TiDB 将会返回 statement count 5001 exceeds the transaction limitation, autocommit = false
错误。该限制只在可重试的乐观事务中生效,如果使用悲观事务或者关闭了事务重试,事务中的语句数将不受此限制。tcp-keep-alive
tcp-no-delay
cross-join
stats-lease
stats-lease
时间,TiDB 会检查统计信息是否有更新,如果有会将其更新到内存中20 * stats-lease
时间,TiDB 会将 DML 产生的总行数以及修改的行数变化更新到系统表中stats-lease
时间,TiDB 会检查是否有表或者索引需要自动 analyzestats-lease
时间,TiDB 会检查是否有列的统计信息需要被加载到内存中200 * stats-lease
时间,TiDB 会将内存中缓存的 feedback 写入系统表中5 * stats-lease
时间,TiDB 会读取系统表中的 feedback,更新内存中缓存的统计信息stats-lease
为 0s 时,TiDB 会以 3s 的时间间隔周期性的读取系统表中的统计信息并更新内存中缓存的统计信息。但不会自动修改统计信息相关系统表,具体来说,TiDB 不再自动修改这些表:
mysql.stats_meta
:TiDB 不再自动记录事务中对某张表的修改行数,也不会更新到这个系统表中mysql.stats_histograms
/mysql.stats_buckets
和 mysql.stats_top_n
:TiDB 不再自动 analyze 和主动更新统计信息mysql.stats_feedback
:TiDB 不再根据被查询的数据反馈的部分统计信息更新表和索引的统计信息feedback-probability
feedback-probability
的概率收集查询的反馈,用于更新统计信息。query-feedback-limit
pseudo-estimate-ratio
force-priority
distinct-agg-push-down
Distinct
的聚合函数(比如 select count(distinct a) from t
)下推到 Coprocessor 的优化操作。enforce-mpp
tidb_enforce_mpp
的默认值为 ON。stats-load-concurrency
从 v5.4.0 版本开始引入警告
统计信息同步加载功能目前为实验性特性,不建议在生产环境中使用。
[1, 128]
stats-load-queue-size
从 v5.4.0 版本开始引入警告
统计信息同步加载功能目前为实验性特性,不建议在生产环境中使用。
[1, 100000]
enable-stats-cache-mem-quota
从 v6.1.0 版本开始引入警告
该变量为实验特性,不推荐在生产环境中使用。
opentracing 的相关的设置。
enable
rpc-metrics
opentracing.sampler 相关的设置。
type
param
sampling-server-url
max-operations
sampling-refresh-interval
opentracing.reporter 相关的设置。
queue-size
buffer-flush-interval
log-spans
local-agent-host-port
grpc-connection-count
grpc-keepalive-time
grpc-keepalive-timeout
grpc-compression-type
commit-timeout
max-batch-size
max-batch-wait-time
max-batch-wait-time
纳秒批量将此期间的数据包封装成一个大包发送给 TiKV 节点,仅在 tikv-client.max-batch-size
值大于 0 时有效,不推荐修改该值。batch-wait-size
overload-threshold
tikv-client.max-batch-size
值大于 0 时有效,不推荐修改该值。本部分介绍 Coprocessor Cache 相关的配置项。
capacity-mb
TiDB Binlog 相关配置。
enable
write-timeout
ignore-error
true
,发生错误时,TiDB 会停止写入 binlog,并且在监控项 tidb_server_critical_error_total
上计数加 1;如果设置为 false
,写入 binlog 失败,会停止整个 TiDB 的服务。binlog-socket
strategy
TiDB 服务状态相关配置。
report-status
record-db-qps
悲观事务使用方法请参考 TiDB 悲观事务模式。
DEADLOCKS
表文档的可重试的死锁错误小节。用来控制开启全局悲观事务模式下 (tidb_txn_mode='pessimistic'
) 时,自动提交的事务使用的事务模式。默认情况下,即使开启全局悲观事务模式,自动提交事务依然使用乐观事务模式来执行。当开启该配置项后(设置为 true
),在全局悲观事务模式下,自动提交事务将也使用悲观事务模式执行。行为与其他显式提交的悲观事务相同。
对于存在冲突的场景,开启本开关可以将自动提交事务纳入全局等锁管理中,从而避免死锁,改善冲突造成死锁带来的时延尖刺。
对于不存在冲突的场景,如果有大量自动提交事务(例如自动提交事务数量占业务数量的比例超过一半甚至更多,需要根据实际情况分析)且单个事务操作数据量较大的情况下,开启该配置项会造成性能回退。例如,自动提交的 INSERT INTO SELECT
语句。
默认值:false
读取隔离相关的配置项。
engines
PROXY 协议相关的配置项。
networks
,
分隔多个地址,或用 *
代表所有 IP 地址。警告
需谨慎使用 *
符号,因为 *
允许来自任何 IP 的客户端自行汇报其 IP 地址,从而可能引入安全风险。另外,*
可能导致部分直接连接 TiDB 的内部组件无法使用,例如 TiDB Dashboard。
experimental 部分为 TiDB 实验功能相关的配置。该部分从 v3.1.0 开始引入。
allow-expression-index
从 v4.0.0 版本开始引入tidb_allow_function_for_expression_index
变量可得到能直接用于创建表达式的安全函数。