Skip to content

TiDB 配置参数参考

配置管理基础

配置文件位置

使用 TiUP 部署的 TiDB 集群,配置文件位于:

  • TiDB:/tidb-deploy/tidb-port/conf/tidb.toml
  • TiKV:/tidb-deploy/tikv-port/conf/tikv.toml
  • PD:/tidb-deploy/pd-port/conf/pd.toml
  • TiFlash:/tidb-deploy/tiflash-port/conf/tiflash.toml
  • TiCDC:/tidb-deploy/cdc-port/conf/cdc.toml

配置方式

1. 配置文件

编辑各组件的配置文件,然后重启组件使配置生效。

2. 命令行参数

在启动组件时通过命令行参数覆盖配置文件中的设置。

3. 动态配置

部分参数支持动态调整,无需重启组件即可生效。可以通过 TiDB Dashboard 或 SQL 命令进行调整。

TiDB 配置参数

基本配置

参数名类型默认值描述建议值
hoststring"0.0.0.0"TiDB 监听地址0.0.0.0(生产环境建议绑定具体网卡)
portint4000TiDB 服务端口4000
status-portint10080TiDB 状态端口10080
advertise-addressstring""TiDB 对外暴露地址服务器 IP 地址
storestring"tikv"存储引擎类型tikv
pathstring"127.0.0.1:2379"PD 地址PD 集群地址列表,如 "10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379"

日志配置

参数名类型默认值描述建议值
log.levelstring"info"日志级别info(生产环境),debug(调试)
log.formatstring"text"日志格式text 或 json
log.filestring""日志文件路径/tidb-deploy/tidb-4000/log/tidb.log
log.slow-query-filestring""慢查询日志文件路径/tidb-deploy/tidb-4000/log/slow.log
log.slow-thresholdint300慢查询阈值,单位:毫秒100(根据业务需求调整)

性能配置

参数名类型默认值描述建议值
performance.max-procsint0最大 CPU 核心数,0 表示使用所有核心0
performance.txn-total-size-limitstring"1073741824"事务总大小限制"1073741824"(1GB)
performance.txn-entry-size-limitstring"67108864"事务单行大小限制"67108864"(64MB)
performance.statement-count-limitint5000单条语句的最大元素个数5000
performance.retry-limitint10事务重试次数限制10

SQL 优化配置

参数名类型默认值描述建议值
prepared-plan-cache.enabledboolfalse是否启用执行计划缓存true
oom-actionstring"log"OOM 时的行为"log"(生产环境),"cancel"(测试环境)
tmp-storage-pathstring""临时文件存储路径"/tmp/tidb"
new-collation-enabledboolfalse是否启用新的字符集排序规则false(v5.0+ 建议启用)

安全配置

参数名类型默认值描述建议值
ssl-certstring""SSL 证书路径生产环境建议配置
ssl-keystring""SSL 密钥路径生产环境建议配置
ssl-castring""CA 证书路径生产环境建议配置
require-secure-transportboolfalse是否要求安全连接false(生产环境建议启用)

TiKV 配置参数

基本配置

参数名类型默认值描述建议值
addrstring"0.0.0.0:20160"TiKV 监听地址0.0.0.0:20160
advertise-addrstring""TiKV 对外暴露地址服务器 IP 地址:20160
status-addrstring"0.0.0.0:20180"TiKV 状态地址0.0.0.0:20180
pd-endpointsstring""PD 地址列表PD 集群地址,如 "http://10.0.0.1:2379,http://10.0.0.2:2379"
data-dirstring"./data"数据存储目录/tidb-data/tikv-20160

存储配置

参数名类型默认值描述建议值
storage.block-cache.capacitystring"1GB"块缓存容量建议设置为系统内存的 40%
storage.wal.dirstring""WAL 存储目录建议与数据目录分离,使用高速存储
storage.wal.sync-frequencyuint640WAL 同步频率,0 表示每次写入都同步0(生产环境)
storage.scheduler-worker-pool-sizeuint4存储调度 worker 池大小CPU 核心数的 1/4
storage.compression.defaultstring"none"默认压缩算法"zstd"(建议启用)
storage.compression.levelint3压缩级别3(平衡压缩率和性能)

Raft 配置

参数名类型默认值描述建议值
raftstore.raftdb-pathstring""Raft 日志存储路径建议与数据目录分离
raftstore.raft-base-tick-intervalstring"200ms"Raft base tick 间隔"200ms"
raftstore.raft-election-timeout-ticksuint6410Raft 选举超时 ticks 数10
raftstore.raft-log-gc-tick-intervalstring"30m"Raft 日志 GC 间隔"30m"
raftstore.raft-log-gc-thresholduint6450000Raft 日志 GC 阈值50000

RocksDB 配置

参数名类型默认值描述建议值
rocksdb.max-background-jobsint8RocksDB 后台任务数CPU 核心数
rocksdb.max-open-filesint-1RocksDB 最大打开文件数-1(无限制)
rocksdb.wal-bytes-per-syncuint640WAL 每写入多少字节同步一次0(每次写入都同步)
rocksdb.write-buffer-sizestring"67108864"RocksDB 写入缓冲区大小"134217728"(128MB)
rocksdb.max-write-buffer-numberint4RocksDB 最大写入缓冲区数量4

gRPC 配置

参数名类型默认值描述建议值
server.grpc-concurrencyint4gRPC 并发数CPU 核心数
server.grpc-keepalive-timestring"10s"gRPC keepalive 时间"10s"
server.grpc-keepalive-timeoutstring"3s"gRPC keepalive 超时"3s"
server.grpc-memory-pool-quotastring"2GB"gRPC 内存池配额"4GB"(根据系统内存调整)

PD 配置参数

基本配置

参数名类型默认值描述建议值
namestring""PD 节点名称唯一标识,如 "pd-1"
client-urlsstring"http://127.0.0.1:2379"客户端访问地址"http://0.0.0.0:2379"
peer-urlsstring"http://127.0.0.1:2380"节点间通信地址"http://0.0.0.0:2380"
advertise-client-urlsstring""对外暴露的客户端地址服务器 IP 地址:2379
advertise-peer-urlsstring""对外暴露的节点间通信地址服务器 IP 地址:2380
data-dirstring"default.${name}"数据存储目录/tidb-data/pd-2379
initial-clusterstring""初始集群配置所有 PD 节点的名称和地址,如 "pd-1=http://10.0.0.1:2380,pd-2=http://10.0.0.2:2380,pd-3=http://10.0.0.3:2380"

集群配置

参数名类型默认值描述建议值
cluster-namestring"default"集群名称唯一标识,如 "tidb-cluster"
leasestring"3s"PD Leader 租约时间"3s"
enable-grpc-gatewaybooltrue是否启用 gRPC gatewaytrue
metric.pull-intervalstring"10s"指标拉取间隔"10s"

调度配置

参数名类型默认值描述建议值
replication.enable-placement-rulesboolfalse是否启用 placement rulestrue(v4.0+ 建议启用)
replication.max-replicasint3每个 Region 的最大副本数3(生产环境建议 3-5)
replication.location-labelsstring""位置标签如 "host,rack,zone"
schedule.max-snapshot-countint3最大 snapshot 数量6(根据集群规模调整)
schedule.max-pending-peer-countint16最大 pending peer 数量32(根据集群规模调整)
schedule.leader-schedule-limitint4Leader 调度并发数8(根据集群规模调整)
schedule.region-schedule-limitint20Region 调度并发数40(根据集群规模调整)
schedule.replica-schedule-limitint64副本调度并发数128(根据集群规模调整)

日志配置

参数名类型默认值描述建议值
log.levelstring"info"日志级别info(生产环境)
log.formatstring"text"日志格式text 或 json
log.filestring""日志文件路径/tidb-deploy/pd-2379/log/pd.log

TiFlash 配置参数

基本配置

参数名类型默认值描述建议值
server.http_portint8123HTTP 服务端口8123
server.tcp_portint9000TCP 服务端口9000
server.flash_service_portint3930Flash 服务端口3930
server.raft_service_portint3931Raft 服务端口3931
server.metric_portint8234指标服务端口8234
pd_addrstring""PD 地址PD 集群地址列表
pathstring"./data"数据存储目录/tidb-data/tiflash-9000

存储配置

参数名类型默认值描述建议值
storage.data_pathstring""数据存储路径与 path 一致
storage.capacitystring"0"存储容量限制,0 表示无限制"0"
storage.format_versionint2存储格式版本2
storage.enable_page_cachebooltrue是否启用页缓存true
storage.page_cache_sizestring"1073741824"页缓存大小建议设置为系统内存的 30%

计算配置

参数名类型默认值描述建议值
flash.num_threadsint8计算线程数CPU 核心数的 1/2
flash.num_workers_per_ioint4每个 IO 任务的 worker 数4
flash.max_memory_usagestring"10000000000"最大内存使用量建议设置为系统内存的 70%
flash.reserve_memorystring"1000000000"预留内存"1000000000"(1GB)

日志配置

参数名类型默认值描述建议值
logger.levelstring"information"日志级别"information"(生产环境)
logger.logstring""日志文件路径/tidb-deploy/tiflash-9000/log/tiflash.log
logger.errorlogstring""错误日志文件路径/tidb-deploy/tiflash-9000/log/tiflash_error.log
logger.sizeint1000日志文件大小限制(MB)1000
logger.countint10日志文件保留数量10

TiCDC 配置参数

基本配置

参数名类型默认值描述建议值
addrstring"0.0.0.0:8300"TiCDC Server 监听地址"0.0.0.0:8300"
advertise-addrstring""TiCDC Server 对外暴露地址服务器 IP 地址:8300
pdstring""PD 地址PD 集群地址列表
data-dirstring"./data"数据存储目录/tidb-data/cdc-8300
gc-ttlint86400GC 安全阈值,单位:秒86400(24 小时)
tzstring"System"时区设置"UTC" 或 "Asia/Shanghai"

日志配置

参数名类型默认值描述建议值
log-levelstring"info"日志级别"info"(生产环境)
log-filestring""日志文件路径/tidb-deploy/cdc-8300/log/cdc.log
log-formatstring"text"日志格式"text" 或 "json"

安全配置

参数名类型默认值描述建议值
castring""CA 证书路径生产环境建议配置
certstring""客户端证书路径生产环境建议配置
keystring""客户端密钥路径生产环境建议配置

配置文件示例

TiDB 配置文件示例

toml
# TiDB 基本配置
host = "0.0.0.0"
port = 4000
status-port = 10080
advertise-address = "10.0.0.1"
store = "tikv"
path = "10.0.0.4:2379,10.0.0.5:2379,10.0.0.6:2379"

# 日志配置
[log]
level = "info"
format = "text"
file = "/tidb-deploy/tidb-4000/log/tidb.log"
slow-query-file = "/tidb-deploy/tidb-4000/log/slow.log"
slow-threshold = 100

# 性能配置
[performance]
max-procs = 0
txn-total-size-limit = "1073741824"
txn-entry-size-limit = "67108864"
statement-count-limit = 5000
retry-limit = 10

# SQL 优化配置
prepared-plan-cache.enabled = true
oom-action = "log"
tmp-storage-path = "/tmp/tidb"

TiKV 配置文件示例

toml
# TiKV 基本配置
addr = "0.0.0.0:20160"
advertise-addr = "10.0.0.1:20160"
status-addr = "0.0.0.0:20180"
pd-endpoints = ["http://10.0.0.4:2379", "http://10.0.0.5:2379", "http://10.0.0.6:2379"]
data-dir = "/tidb-data/tikv-20160"

# 存储配置
[storage]
block-cache.capacity = "16GB"
wal.dir = "/data/wal"
scheduler-worker-pool-size = 4
compression.default = "zstd"
compression.level = 3

# Raft 配置
[raftstore]
raftdb-path = "/data/raft"
raft-base-tick-interval = "200ms"
raft-election-timeout-ticks = 10
raft-log-gc-tick-interval = "30m"
raft-log-gc-threshold = 50000

# RocksDB 配置
[rocksdb]
max-background-jobs = 8
max-open-files = -1
write-buffer-size = "134217728"
max-write-buffer-number = 4

# gRPC 配置
[server]
grpc-concurrency = 8
grpc-keepalive-time = "10s"
grpc-keepalive-timeout = "3s"
grpc-memory-pool-quota = "4GB"

PD 配置文件示例

toml
# PD 基本配置
name = "pd-1"
client-urls = "http://0.0.0.0:2379"
peer-urls = "http://0.0.0.0:2380"
advertise-client-urls = "http://10.0.0.4:2379"
advertise-peer-urls = "http://10.0.0.4:2380"
data-dir = "/tidb-data/pd-2379"
initial-cluster = "pd-1=http://10.0.0.4:2380,pd-2=http://10.0.0.5:2380,pd-3=http://10.0.0.6:2380"

# 集群配置
cluster-name = "tidb-cluster"
lease = "3s"
enable-grpc-gateway = true

# 调度配置
[replication]
enable-placement-rules = true
max-replicas = 3
location-labels = "host,rack,zone"

[schedule]
max-snapshot-count = 6
max-pending-peer-count = 32
leader-schedule-limit = 8
region-schedule-limit = 40
replica-schedule-limit = 128

# 日志配置
[log]
level = "info"
format = "text"
file = "/tidb-deploy/pd-2379/log/pd.log"

配置参数管理

查看当前配置

TiDB 配置

使用 SQL 命令查看 TiDB 配置:

sql
SHOW CONFIG;

查看特定配置项:

sql
SHOW CONFIG WHERE name LIKE '%max-procs%';

TiKV 配置

通过 HTTP API 查看 TiKV 配置:

bash
curl http://10.0.0.1:20180/config

PD 配置

通过 HTTP API 查看 PD 配置:

bash
curl http://10.0.0.4:2379/pd/api/v1/config

修改配置

静态配置

编辑配置文件后重启组件:

bash
tiup cluster restart <cluster-name> -N <node-ip>:<port>

动态配置

部分参数支持动态修改,无需重启组件。

TiDB 动态配置

使用 SQL 命令修改:

sql
SET GLOBAL tmp-storage-path = '/new/path';
PD 动态配置

通过 HTTP API 修改:

bash
curl -X PUT -d '{"max-replicas": 5}' http://10.0.0.4:2379/pd/api/v1/config/replication

配置最佳实践

1. 配置文件备份

  • 定期备份配置文件
  • 记录配置变更历史
  • 配置变更前进行测试

2. 配置参数验证

  • 使用 tiup cluster check 命令验证配置
  • 在测试环境验证配置变更
  • 监控配置变更后的系统性能

3. 配置标准化

  • 建立配置标准和规范
  • 使用配置管理工具管理配置
  • 确保集群中相同角色的节点配置一致

4. 性能调优

  • 根据硬件配置调整参数
  • 根据业务负载调整参数
  • 定期评估和优化配置

5. 安全配置

  • 启用 TLS 加密
  • 配置合适的权限
  • 定期更新证书

常见问题(FAQ)

Q1: 如何确定配置参数的默认值?

A1: 可以通过以下方式查看配置参数的默认值:

  • 查看官方文档
  • 使用 tiup cluster template 命令查看模板配置
  • 启动组件时不指定该参数,查看日志中的默认值

Q2: 如何修改 TiDB 的最大连接数?

A2: 修改 TiDB 配置文件中的 max-connections 参数:

toml
max-connections = 1000

然后重启 TiDB 组件。

Q3: 如何调整 TiKV 的存储压缩算法?

A3: 修改 TiKV 配置文件中的 storage.compression.default 参数:

toml
[storage]
compression.default = "zstd"
compression.level = 3

然后重启 TiKV 组件。

Q4: 如何启用 PD 的 placement rules?

A4: 修改 PD 配置文件中的 replication.enable-placement-rules 参数:

toml
[replication]
enable-placement-rules = true

然后重启 PD 组件。

Q5: 如何调整 TiFlash 的内存使用?

A5: 修改 TiFlash 配置文件中的 flash.max_memory_usage 参数:

toml
[flash]
max_memory_usage = "20GB"

然后重启 TiFlash 组件。

Q6: 如何查看 TiCDC 的配置?

A6: 通过 HTTP API 查看 TiCDC 配置:

bash
curl http://10.0.0.1:8300/api/v1/config

Q7: 哪些配置参数支持动态修改?

A7: 支持动态修改的参数包括:

  • TiDB:大部分性能参数和日志参数
  • PD:大部分调度参数
  • TiKV:部分 RocksDB 参数

具体支持的参数请参考官方文档。

Q8: 如何优化 TiDB 集群的性能?

A8: 根据业务场景和硬件配置调整以下参数:

  • TiDB:prepared-plan-cache.enabledperformance.max-procstxn-total-size-limit
  • TiKV:storage.block-cache.capacitystorage.compression.defaultraftstore.raft-base-tick-interval
  • PD:replication.max-replicasschedule.*-limit 参数

Q9: 如何配置 TiDB 集群的 TLS 加密?

A9: 为每个组件配置证书和密钥:

toml
# TiDB TLS 配置
ssl-cert = "/path/to/tidb-cert.pem"
ssl-key = "/path/to/tidb-key.pem"
ssl-ca = "/path/to/ca.pem"
require-secure-transport = true

# TiKV TLS 配置
[security]
cert-path = "/path/to/tikv-cert.pem"
key-path = "/path/to/tikv-key.pem"
ca-path = "/path/to/ca.pem"

# PD TLS 配置
[security]
cert-file = "/path/to/pd-cert.pem"
key-file = "/path/to/pd-key.pem"
ca-file = "/path/to/ca.pem"

Q10: 如何配置 TiDB 集群的监控?

A10: 确保以下参数正确配置:

  • metric.pull-interval:指标拉取间隔
  • log.level:日志级别
  • enable-profile:是否启用性能分析

然后配置 Prometheus 和 Grafana 监控。