本文档详细介绍TiDB分布式数据库的架构原理与核心组件,包括TiDB、TiKV、PD、TiFlash等组件的功能和作用,以及在生产环境中的部署规划和最佳实践。风哥教程参考TiDB官方文档产品概览和架构设计相关内容,适合DBA和开发人员学习使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 TiDB数据库的概念
TiDB是平凯星辰公司自主设计、研发的开源分布式关系型数据库,具有以下特点:
- 分布式架构:支持水平扩展,无单点故障
- MySQL兼容性:支持MySQL协议和语法
- 强一致性:基于Raft协议保证数据一致性
- 高可用性:多副本机制,自动故障转移
- HTAP能力:同时支持OLTP和OLAP工作负载
- 解决传统数据库的扩展性问题
- 提供金融级的数据一致性保证
- 简化数据库运维复杂度
- 降低TCO(总体拥有成本)
1.2 TiDB分布式架构原理
TiDB采用分层架构设计,主要分为三层:
- 计算层(TiDB):负责SQL解析、优化和执行
- 存储层(TiKV):负责数据的持久化存储
- 调度层(PD):负责集群调度和元数据管理
– 计算层(TiDB):无状态,可水平扩展
– 存储层(TiKV):分布式键值存储,多副本
– 调度层(PD):集群大脑,负责资源调度
– 分析引擎(TiFlash):列存引擎,加速分析查询
# 数据分片机制
– 按范围分片(Region)
– 自动分裂和合并
– 数据均衡分布
1.3 TiDB核心组件详解
1.3.1 TiDB组件
TiDB是SQL引擎,负责:
- 接收客户端连接
- SQL解析和优化
- 执行计划生成
- 结果返回
风哥提示:
1.3.2 TiKV组件
TiKV是分布式键值存储,负责:
- 数据持久化存储
- 多副本同步(Raft协议)
- 事务处理
- 数据压缩和编码
1.3.3 PD组件
PD(Placement Driver)是集群大脑,负责:
- 集群元数据管理
- Region调度和负载均衡
- TiKV节点管理
- 时间戳分配(TSO)
1.3.4 TiFlash组件
TiFlash是列式存储引擎,负责:
- 实时数据同步
- OLAP查询加速
- 列式存储格式
- 向量化执行
Part02-生产环境规划与建议
2.1 系统硬件要求
TiDB生产环境的硬件建议:
– CPU:8-32核,推荐16核以上
– 内存:32-128GB,推荐64GB以上
– 存储:SSD,500GB以上
– 网络:万兆网卡
# TiKV节点硬件要求
– CPU:8-32核,推荐16核以上
– 内存:32-128GB,推荐64GB以上
– 存储:NVMe SSD,1TB以上
– 网络:万兆网卡
# PD节点硬件要求
– CPU:4-8核
– 内存:8-16GB
– 存储:SSD,200GB以上
– 网络:千兆以上
# TiFlash节点硬件要求
– CPU:16-32核
– 内存:64-128GB
– 存储:NVMe SSD,2TB以上
– 网络:万兆网卡
2.2 操作系统环境要求
推荐的操作系统:
- Oracle Linux 9.3 / RHEL 9.3
- Oracle Linux 8.x / RHEL 8.x
- Oracle Linux 7.x / RHEL 7.x
- 国产麒麟操作系统 Kylin v10 SP3
- 欧拉操作系统
# 关闭透明大页
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
# 关闭NUMA
$ numactl –interleave=all
# 调整文件描述符
$ echo “* soft nofile 65536” >> /etc/security/limits.conf
$ echo “* hard nofile 65536” >> /etc/security/limits.conf
# 调整网络参数
$ echo “net.core.somaxconn = 32768” >> /etc/sysctl.conf
$ echo “net.ipv4.tcp_max_syn_backlog = 8192” >> /etc/sysctl.conf
$ sysctl -p
2.3 部署架构规划
生产环境部署架构建议:
– TiDB:1-2节点
– TiKV:3节点
– PD:3节点
– TiFlash:0-1节点学习交流加群风哥QQ113257174
# 中规模部署(生产)
– TiDB:3-6节点
– TiKV:3-9节点
– PD:3节点
– TiFlash:2-3节点
# 大规模部署(核心业务)
– TiDB:6-12节点
– TiKV:9-15节点
– PD:3节点
– TiFlash:3-6节点
# 网络规划
– 管理网络:千兆以上
– 业务网络:万兆以上
– 存储网络:万兆以上(建议独立)
Part03-生产环境项目实施方案
3.1 核心组件配置
3.1.1 TiDB配置示例
[server]
port = 4000
status_port = 10080
[log]
level = “info”
[performance]
max-procs = 16
[prepared-plan-cache]
enable = true
capacity = 1000
3.1.2 TiKV配置示例
[server]
grpc-compression-type = “gzip”
[storage]
data-dir = “/tidb/fgdata/tikv”
[raftstore]
raftdb-path = “/tidb/fgdata/tikv/raft”
[rocksdb]
max-open-files = 4096
[performance]
max-procs = 16
3.1.3 PD配置示例
[server]
leader-priority = 1
[pd]
data-dir = “/tidb/fgdata/pd”
[schedule]
max-snapshot-count = 3
max-pending-peer-count = 16
3.2 网络配置要求
网络配置要点:
- 所有节点之间网络互通
- 开放必要的端口:TiDB(4000, 10080)、TiKV(20160, 20180)、PD(2379, 2380)
- 关闭防火墙或配置相应规则
- 配置主机名解析
$ cat >> /etc/hosts << EOF 192.168.1.101 fgedu-tidb-01.fgedu.net.cn 192.168.1.102 fgedu-tidb-02.fgedu.net.cn 192.168.1.103 fgedu-tikv-01.fgedu.net.cn 192.168.1.104 fgedu-tikv-02.fgedu.net.cn 192.168.1.105 fgedu-tikv-03.fgedu.net.cn 192.168.1.106 fgedu-pd-01.fgedu.net.cn 192.168.1.107 fgedu-pd-02.fgedu.net.cn 192.168.1.108 fgedu-pd-03.fgedu.net.cn EOF # 测试网络连通性 $ ping fgedu-tidb-01.fgedu.net.cn $ telnet fgedu-tidb-01.fgedu.net.cn 4000
3.3 安全考虑因素
安全配置要点:
- 设置强密码
- 限制访问IP
- 启用SSL/TLS
- 定期备份
- 监控和审计
Part04-生产案例与实战讲解
4.1 架构实战案例
4.1.1 三节点TiKV集群部署
$ tiup cluster display fgedu-tidb-cluster
Cluster type: tidb
Cluster name: fgedu-tidb-cluster
Cluster version: v7.5.0
Deploy user: tidb
SSH type: builtin
Dashboard URL: http://192.168.1.101:2379/dashboard
ID Role Host Ports Status Data Dir
— —- —- —– —— ——–
192.168.1.101:9000 pd 192.168.1.101 2379/2380 Up /tidb/fgdata/pd
192.168.1.102:9000 pd 192.168.1.102 2379/2380 Up /tidb/fgdata/pd
192.168.1.103:9000 pd 192.168.1.103 2379/2380 Up /tidb/fgdata/pd
192.168.1.104:9000 tikv 192.168.1.104 20160/20180/20190/20200/20210/20220 Up /tidb/fgdata/tikv
192.168.1.105:9000 tikv 192.168.1.105 20160/20180/20190/20200/20210/20220 Up /tidb/fgdata/tikv
192.168.1.106:9000 tikv 192.168.1.106 20160/20180/20190/20200/20210/20220 Up /tidb/fgdata/tikv
192.168.1.107:9000 tidb 192.168.1.107 4000/10080 Up /tidb/fgdata/tidb
192.168.1.108:9000 tidb 192.168.1.108 4000/10080 Up /tidb/fgdata/tidb
4.1.2 查看TiKV节点状态
$ curl http://192.168.1.104:20180/status
{
“server”: {
“version”: “7.5.0”,
“git_hash”: “abcdef1234”,
“start_timestamp”: 1709289600,
“uptime”: “1d 2h 3m 4s”
},
“store”: {
“id”: 1,
“state”: “Up”,
“capacity”: “1.82 TiB”,
“available”: “1.5 TiB”,
“leader_count”: 1234,
“leader_weight”: 1,
“region_count”: 4567,
“region_weight”: 1
}
}
4.2 组件管理实战
4.2.1 查看PD集群状态
$ pd-ctl -u http://192.168.1.101:2379 cluster
{
“id”: “fgedu-tidb-cluster”,
“members”: [
{
“name”: “pd-1”,
“id”: 1,
“peerURLs”: [“http://192.168.1.101:2380”],
“clientURLs”: [“http://192.168.1.101:2379”],
“leader”: true
},
{
“name”: “pd-2”,
“id”: 2,
“peerURLs”: [“http://192.168.1.102:2380”],
“clientURLs”: [“http://192.168.1.102:2379”],
“leader”: false
},
{
“name”: “pd-3”,
“id”: 3,
“peerURLs”: [“http://192.168.1.103:2380”],
“clientURLs”: [“http://192.168.1.103:2379”],
“leader”: false
}
]
}
4.2.2 查看TiDB节点状态
$ curl http://192.168.1.107:10080/status
{
“connections”: 10,
“version”: “7.5.0”,
“git_hash”: “abcdef1234”,
“uptime”: “1d 2h 3m 4s”,
“grpc_connections”: 5,
“idle_connections”: 8,
“txn_total”: 123456,
“query_total”: 789012
}
4.3 性能调优实战
4.3.1 查看慢查询
$ curl http://192.168.1.107:10080/info/slow-queries
[
{
“ts”: “2026-04-09 10:00:00”,
“query”: “SELECT * FROM fgedu_users WHERE age > 30”,
“duration”: 1000,
“plan”: “…”
}
]
4.3.2 查看执行计划
$ mysql -h 192.168.1.107 -P 4000 -u root -p
mysql> EXPLAIN SELECT * FROM fgedu_users WHERE age > 30;
+————————+———-+———–+—————+——————————–+
| id | estRows | task | access object | operator info |
+————————+———-+———–+—————+——————————–+
| TableReader_7 | 10000.00 | root | | data:Selection_6 |
| └─Selection_6 | 10000.00 | cop[tikv] | | gt(fgedu_users.age, 30) |
| └─TableScan_5 | 50000.00 | cop[tikv] | table:fgedu_users | keep order:false, stats:pseudo |
+————————+———-+———–+—————+——————————–+
3 rows in set (0.00 sec)
Part05-风哥经验总结与分享
5.1 生产最佳实践
TiDB生产环境最佳实践:
- 架构设计:根据业务规模选择合适的部署架构
- 硬件选型:优先选择NVMe SSD和万兆网络
- 参数调优:根据实际负载调整各组件参数
- 监控告警:部署Prometheus和Grafana监控
- 备份策略:制定完善的备份和恢复方案
- 容灾方案:考虑多机房部署和异地灾备
5.2 常见问题与解决方案
5.2.1 TiKV节点磁盘满
# 解决方案:
1. 清理过期数据
2. 调整数据保留策略
3. 扩容TiKV节点
4. 检查是否有异常大的表
# 预防措施:
– 监控磁盘使用率
– 定期清理过期数据
– 合理规划存储容量
5.2.2 PD集群 leader 选举失败
# 解决方案:
1. 检查网络连接
2. 检查PD节点状态
3. 重启故障节点
4. 重建PD集群(最坏情况)
# 预防措施:
– 确保PD节点网络稳定
– 配置PD节点高可用
– 监控PD集群状态
5.3 技术发展趋势
TiDB技术发展趋势:
- HTAP能力增强:进一步提升OLAP性能
- 云原生支持:更好的Kubernetes集成
- 智能运维:自动化故障检测和处理
- 多租户支持:更好的资源隔离
- 生态系统完善:更多工具和集成方案
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
