外观
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 配置参数
基本配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
host | string | "0.0.0.0" | TiDB 监听地址 | 0.0.0.0(生产环境建议绑定具体网卡) |
port | int | 4000 | TiDB 服务端口 | 4000 |
status-port | int | 10080 | TiDB 状态端口 | 10080 |
advertise-address | string | "" | TiDB 对外暴露地址 | 服务器 IP 地址 |
store | string | "tikv" | 存储引擎类型 | tikv |
path | string | "127.0.0.1:2379" | PD 地址 | PD 集群地址列表,如 "10.0.0.1:2379,10.0.0.2:2379,10.0.0.3:2379" |
日志配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
log.level | string | "info" | 日志级别 | info(生产环境),debug(调试) |
log.format | string | "text" | 日志格式 | text 或 json |
log.file | string | "" | 日志文件路径 | /tidb-deploy/tidb-4000/log/tidb.log |
log.slow-query-file | string | "" | 慢查询日志文件路径 | /tidb-deploy/tidb-4000/log/slow.log |
log.slow-threshold | int | 300 | 慢查询阈值,单位:毫秒 | 100(根据业务需求调整) |
性能配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
performance.max-procs | int | 0 | 最大 CPU 核心数,0 表示使用所有核心 | 0 |
performance.txn-total-size-limit | string | "1073741824" | 事务总大小限制 | "1073741824"(1GB) |
performance.txn-entry-size-limit | string | "67108864" | 事务单行大小限制 | "67108864"(64MB) |
performance.statement-count-limit | int | 5000 | 单条语句的最大元素个数 | 5000 |
performance.retry-limit | int | 10 | 事务重试次数限制 | 10 |
SQL 优化配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
prepared-plan-cache.enabled | bool | false | 是否启用执行计划缓存 | true |
oom-action | string | "log" | OOM 时的行为 | "log"(生产环境),"cancel"(测试环境) |
tmp-storage-path | string | "" | 临时文件存储路径 | "/tmp/tidb" |
new-collation-enabled | bool | false | 是否启用新的字符集排序规则 | false(v5.0+ 建议启用) |
安全配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
ssl-cert | string | "" | SSL 证书路径 | 生产环境建议配置 |
ssl-key | string | "" | SSL 密钥路径 | 生产环境建议配置 |
ssl-ca | string | "" | CA 证书路径 | 生产环境建议配置 |
require-secure-transport | bool | false | 是否要求安全连接 | false(生产环境建议启用) |
TiKV 配置参数
基本配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
addr | string | "0.0.0.0:20160" | TiKV 监听地址 | 0.0.0.0:20160 |
advertise-addr | string | "" | TiKV 对外暴露地址 | 服务器 IP 地址:20160 |
status-addr | string | "0.0.0.0:20180" | TiKV 状态地址 | 0.0.0.0:20180 |
pd-endpoints | string | "" | PD 地址列表 | PD 集群地址,如 "http://10.0.0.1:2379,http://10.0.0.2:2379" |
data-dir | string | "./data" | 数据存储目录 | /tidb-data/tikv-20160 |
存储配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
storage.block-cache.capacity | string | "1GB" | 块缓存容量 | 建议设置为系统内存的 40% |
storage.wal.dir | string | "" | WAL 存储目录 | 建议与数据目录分离,使用高速存储 |
storage.wal.sync-frequency | uint64 | 0 | WAL 同步频率,0 表示每次写入都同步 | 0(生产环境) |
storage.scheduler-worker-pool-size | uint | 4 | 存储调度 worker 池大小 | CPU 核心数的 1/4 |
storage.compression.default | string | "none" | 默认压缩算法 | "zstd"(建议启用) |
storage.compression.level | int | 3 | 压缩级别 | 3(平衡压缩率和性能) |
Raft 配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
raftstore.raftdb-path | string | "" | Raft 日志存储路径 | 建议与数据目录分离 |
raftstore.raft-base-tick-interval | string | "200ms" | Raft base tick 间隔 | "200ms" |
raftstore.raft-election-timeout-ticks | uint64 | 10 | Raft 选举超时 ticks 数 | 10 |
raftstore.raft-log-gc-tick-interval | string | "30m" | Raft 日志 GC 间隔 | "30m" |
raftstore.raft-log-gc-threshold | uint64 | 50000 | Raft 日志 GC 阈值 | 50000 |
RocksDB 配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
rocksdb.max-background-jobs | int | 8 | RocksDB 后台任务数 | CPU 核心数 |
rocksdb.max-open-files | int | -1 | RocksDB 最大打开文件数 | -1(无限制) |
rocksdb.wal-bytes-per-sync | uint64 | 0 | WAL 每写入多少字节同步一次 | 0(每次写入都同步) |
rocksdb.write-buffer-size | string | "67108864" | RocksDB 写入缓冲区大小 | "134217728"(128MB) |
rocksdb.max-write-buffer-number | int | 4 | RocksDB 最大写入缓冲区数量 | 4 |
gRPC 配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
server.grpc-concurrency | int | 4 | gRPC 并发数 | CPU 核心数 |
server.grpc-keepalive-time | string | "10s" | gRPC keepalive 时间 | "10s" |
server.grpc-keepalive-timeout | string | "3s" | gRPC keepalive 超时 | "3s" |
server.grpc-memory-pool-quota | string | "2GB" | gRPC 内存池配额 | "4GB"(根据系统内存调整) |
PD 配置参数
基本配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
name | string | "" | PD 节点名称 | 唯一标识,如 "pd-1" |
client-urls | string | "http://127.0.0.1:2379" | 客户端访问地址 | "http://0.0.0.0:2379" |
peer-urls | string | "http://127.0.0.1:2380" | 节点间通信地址 | "http://0.0.0.0:2380" |
advertise-client-urls | string | "" | 对外暴露的客户端地址 | 服务器 IP 地址:2379 |
advertise-peer-urls | string | "" | 对外暴露的节点间通信地址 | 服务器 IP 地址:2380 |
data-dir | string | "default.${name}" | 数据存储目录 | /tidb-data/pd-2379 |
initial-cluster | string | "" | 初始集群配置 | 所有 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-name | string | "default" | 集群名称 | 唯一标识,如 "tidb-cluster" |
lease | string | "3s" | PD Leader 租约时间 | "3s" |
enable-grpc-gateway | bool | true | 是否启用 gRPC gateway | true |
metric.pull-interval | string | "10s" | 指标拉取间隔 | "10s" |
调度配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
replication.enable-placement-rules | bool | false | 是否启用 placement rules | true(v4.0+ 建议启用) |
replication.max-replicas | int | 3 | 每个 Region 的最大副本数 | 3(生产环境建议 3-5) |
replication.location-labels | string | "" | 位置标签 | 如 "host,rack,zone" |
schedule.max-snapshot-count | int | 3 | 最大 snapshot 数量 | 6(根据集群规模调整) |
schedule.max-pending-peer-count | int | 16 | 最大 pending peer 数量 | 32(根据集群规模调整) |
schedule.leader-schedule-limit | int | 4 | Leader 调度并发数 | 8(根据集群规模调整) |
schedule.region-schedule-limit | int | 20 | Region 调度并发数 | 40(根据集群规模调整) |
schedule.replica-schedule-limit | int | 64 | 副本调度并发数 | 128(根据集群规模调整) |
日志配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
log.level | string | "info" | 日志级别 | info(生产环境) |
log.format | string | "text" | 日志格式 | text 或 json |
log.file | string | "" | 日志文件路径 | /tidb-deploy/pd-2379/log/pd.log |
TiFlash 配置参数
基本配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
server.http_port | int | 8123 | HTTP 服务端口 | 8123 |
server.tcp_port | int | 9000 | TCP 服务端口 | 9000 |
server.flash_service_port | int | 3930 | Flash 服务端口 | 3930 |
server.raft_service_port | int | 3931 | Raft 服务端口 | 3931 |
server.metric_port | int | 8234 | 指标服务端口 | 8234 |
pd_addr | string | "" | PD 地址 | PD 集群地址列表 |
path | string | "./data" | 数据存储目录 | /tidb-data/tiflash-9000 |
存储配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
storage.data_path | string | "" | 数据存储路径 | 与 path 一致 |
storage.capacity | string | "0" | 存储容量限制,0 表示无限制 | "0" |
storage.format_version | int | 2 | 存储格式版本 | 2 |
storage.enable_page_cache | bool | true | 是否启用页缓存 | true |
storage.page_cache_size | string | "1073741824" | 页缓存大小 | 建议设置为系统内存的 30% |
计算配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
flash.num_threads | int | 8 | 计算线程数 | CPU 核心数的 1/2 |
flash.num_workers_per_io | int | 4 | 每个 IO 任务的 worker 数 | 4 |
flash.max_memory_usage | string | "10000000000" | 最大内存使用量 | 建议设置为系统内存的 70% |
flash.reserve_memory | string | "1000000000" | 预留内存 | "1000000000"(1GB) |
日志配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
logger.level | string | "information" | 日志级别 | "information"(生产环境) |
logger.log | string | "" | 日志文件路径 | /tidb-deploy/tiflash-9000/log/tiflash.log |
logger.errorlog | string | "" | 错误日志文件路径 | /tidb-deploy/tiflash-9000/log/tiflash_error.log |
logger.size | int | 1000 | 日志文件大小限制(MB) | 1000 |
logger.count | int | 10 | 日志文件保留数量 | 10 |
TiCDC 配置参数
基本配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
addr | string | "0.0.0.0:8300" | TiCDC Server 监听地址 | "0.0.0.0:8300" |
advertise-addr | string | "" | TiCDC Server 对外暴露地址 | 服务器 IP 地址:8300 |
pd | string | "" | PD 地址 | PD 集群地址列表 |
data-dir | string | "./data" | 数据存储目录 | /tidb-data/cdc-8300 |
gc-ttl | int | 86400 | GC 安全阈值,单位:秒 | 86400(24 小时) |
tz | string | "System" | 时区设置 | "UTC" 或 "Asia/Shanghai" |
日志配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
log-level | string | "info" | 日志级别 | "info"(生产环境) |
log-file | string | "" | 日志文件路径 | /tidb-deploy/cdc-8300/log/cdc.log |
log-format | string | "text" | 日志格式 | "text" 或 "json" |
安全配置
| 参数名 | 类型 | 默认值 | 描述 | 建议值 |
|---|---|---|---|---|
ca | string | "" | CA 证书路径 | 生产环境建议配置 |
cert | string | "" | 客户端证书路径 | 生产环境建议配置 |
key | string | "" | 客户端密钥路径 | 生产环境建议配置 |
配置文件示例
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/configPD 配置
通过 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/configQ7: 哪些配置参数支持动态修改?
A7: 支持动态修改的参数包括:
- TiDB:大部分性能参数和日志参数
- PD:大部分调度参数
- TiKV:部分 RocksDB 参数
具体支持的参数请参考官方文档。
Q8: 如何优化 TiDB 集群的性能?
A8: 根据业务场景和硬件配置调整以下参数:
- TiDB:
prepared-plan-cache.enabled、performance.max-procs、txn-total-size-limit - TiKV:
storage.block-cache.capacity、storage.compression.default、raftstore.raft-base-tick-interval - PD:
replication.max-replicas、schedule.*-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 监控。
