本文档详细介绍TiDB数据库的软硬件环境规划与选型,包括不同规模部署的硬件配置建议、操作系统要求、网络配置等内容。风哥教程参考TiDB官方文档部署安装相关内容,适合DBA和系统管理员在规划TiDB环境时使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 硬件基础概念
TiDB数据库的硬件组成包括:
- 服务器:物理服务器或虚拟机
- CPU:处理计算任务
- 内存:存储临时数据
- 存储:持久化数据
- 网络:节点间通信
- 根据业务规模选择合适的硬件配置
- 优先考虑性能和可靠性
- 预留足够的扩展空间
- 考虑成本效益比
1.2 软件基础概念
TiDB数据库的软件组成包括:
- 操作系统:Linux发行版
- TiDB组件:TiDB、TiKV、PD、TiFlash
- 依赖软件:SSH、NTP等
- 监控软件:Prometheus、Grafana
1.3 环境要求概述
TiDB环境要求主要包括:
- 硬件要求:根据部署规模和业务负载确定
- 软件要求:操作系统版本、依赖软件等
- 网络要求:带宽、延迟、稳定性等
- 安全要求:防火墙、访问控制等
Part02-生产环境规划与建议
2.1 硬件规划建议
2.1.1 小规模部署(测试/开发)
## TiDB节点
– CPU:8核风哥提示:
– 内存:32GB
– 存储:SSD 500GB
– 网络:千兆网卡
## TiKV节点
– CPU:8核
– 内存:32GB
– 存储:SSD 1TB
– 网络:千兆网卡
## PD节点
– CPU:4核
– 内存:8GB
– 存储:SSD 200GB
– 网络:千兆网卡
## TiFlash节点(可选)
– CPU:16核
– 内存:64GB
– 存储:SSD 2TB
– 网络:千兆网卡
2.1.2 中规模部署(生产)
## TiDB节点
– CPU:16核
– 内存:64GB
– 存储:SSD 1TB
– 网络:万兆网卡
## TiKV节点
– CPU:16核
– 内存:64GB
– 存储:NVMe SSD 2TB
– 网络:万兆网卡
## PD节点
– CPU:8核
– 内存:16GB
– 存储:SSD 500GB
– 网络:万兆网卡
## TiFlash节点
– CPU:24核
– 内存:96GB
– 存储:NVMe SSD 4TB
– 网络:万兆网卡
2.1.3 大规模部署(核心业务)
## TiDB节点
– CPU:32核
– 内存:128GB
– 存储:SSD 2TB
– 网络:万兆网卡
## TiKV节点
– CPU:32核
– 内存:128GB
– 存储:NVMe SSD 4TB
– 网络:万兆网卡
## PD节点
– CPU:8核
– 内存:16GB
– 存储:SSD 500GB
– 网络:万兆网卡
## TiFlash节点
– CPU:32核
– 内存:128GB
– 存储:NVMe SSD 8TB
– 网络:万兆网卡
2.2 软件规划建议
2.2.1 操作系统选择
推荐的操作系统:
- Oracle Linux 9.3 / RHEL 9.3:最新版本,性能和安全性更好
- Oracle Linux 8.x / RHEL 8.x:稳定版本,广泛使用
- Oracle Linux 7.x / RHEL 7.x:长期支持版本
- 国产麒麟操作系统 Kylin v10 SP3:国产化需求
- 欧拉操作系统:开源国产操作系统
2.2.2 依赖软件
– SSH:用于节点间通信
– NTP:时间同步
– curl/wget:下载工具
– tar:解压工具学习交流加群风哥QQ113257174
– openssl:安全通信
– numactl:NUMA控制
– ntpdate:时间同步
# 推荐安装
$ yum install -y openssh-clients openssh-server ntp ntpdate curl wget tar openssl numactl
2.3 网络规划建议
2.3.1 网络架构
## 小规模部署
– 单网络平面:业务和管理共用
– 带宽:千兆以上
## 中大规模部署
– 多网络平面:
– 业务网络:万兆以上
– 存储网络:万兆以上(建议独立)
– 管理网络:千兆以上
## 网络配置
– 所有节点在同一网段
– 网络延迟:节点间延迟 < 1ms
- 网络带宽:节点间带宽 > 10Gbps
– 网络稳定性:无丢包、抖动小
2.3.2 端口规划
## TiDB
– 业务端口:4000
– 状态端口:10080
## TiKV
– 服务端口:20160
– 状态端口:20180
– 监控端口:20291
## PD
– 客户端端口:2379
– 集群端口:2380
## TiFlash
– 服务端口:3930
– 状态端口:20292
– 监控端口:8234
## 监控组件
– Prometheus:9090
– Grafana:3000
– Alertmanager:9093
Part03-生产环境项目实施方案
3.1 硬件实施方案
3.1.1 服务器选型
## 品牌选择
– 主流厂商: Dell、HP、Lenovo、华为等
– 国产服务器:浪潮、曙光、华为等
## 配置示例(中规模)
– CPU:Intel Xeon Gold 6330 (16核32线程)
– 内存:64GB DDR4 ECC
– 存储:2×1TB NVMe SSD + 2×4TB SSD
– 网络:2×10Gbps网卡
– 电源:冗余电源
– 散热:冗余风扇
3.1.2 存储配置
## TiKV存储
– 推荐:NVMe SSD
– 性能要求:IOPS > 100K,延迟 < 0.5ms
- 容量计算:数据量 × 3(副本) × 1.5(预留)
## TiDB存储
- 推荐:SSD
- 容量要求:500GB以上
## PD存储
- 推荐:SSD
- 容量要求:200GB以上
## 监控存储
- 推荐:SSD
- 容量要求:500GB以上
3.2 软件实施方案
3.2.1 操作系统安装
## 1. 安装Oracle Linux 8.5
– 选择最小化安装
– 分区建议:
– /boot:1GB
– /:剩余空间(建议50GB以上)
– swap:内存的1.5倍(最大8GB)
## 2. 系统更新
$ yum update -y
## 3. 禁用防火墙(生产环境建议配置规则)
$ systemctl stop firewalld
$ systemctl disable firewalld
## 4. 禁用SELinux
$ setenforce 0
$ sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
3.2.2 系统参数配置
## 1. 关闭透明大页
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
$ echo “echo never > /sys/kernel/mm/transparent_hugepage/enabled” >> /etc/rc.local
$ echo “echo never > /sys/kernel/mm/transparent_hugepage/defrag” >> /etc/rc.local
$ chmod +x /etc/rc.local
## 2. 调整文件描述符
$ echo “* soft nofile 65536” >> /etc/security/limits.conf
$ echo “* hard nofile 65536” >> /etc/security/limits.conf
## 3. 调整网络参数
$ cat >> /etc/sysctl.conf << EOF
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
fs.file-max = 65535
EOF
$ sysctl -p
3.3 配置实施方案
3.3.1 主机名和IP规划
## 节点规划
| 角色 | 主机名 | IP地址 | 说明 |
|——|——–|——–|——|
| TiDB-1 | fgedu-tidb-01.fgedu.net.cn | 192.168.1.101 | 业务节点1 |
| TiDB-2 | fgedu-tidb-02.fgedu.net.cn | 192.168.1.102 | 业务节点2 |
| TiKV-1 | fgedu-tikv-01.fgedu.net.cn | 192.168.1.103 | 存储节点1 |
| TiKV-2 | fgedu-tikv-02.fgedu.net.cn | 192.168.1.104 | 存储节点2 |
| TiKV-3 | fgedu-tikv-03.fgedu.net.cn | 192.168.1.105 | 存储节点3 |
| PD-1 | fgedu-pd-01.fgedu.net.cn | 192.168.1.106 | 调度节点1 |
| PD-2 | fgedu-pd-02.fgedu.net.cn | 192.168.1.107 | 调度节点2 |
| PD-3 | fgedu-pd-03.fgedu.net.cn | 192.168.1.108 | 调度节点3 |
| TiFlash-1 | fgedu-tiflash-01.fgedu.net.cn | 192.168.1.109 | 分析节点1 |
| TiFlash-2 | fgedu-tiflash-02.fgedu.net.cn | 192.168.1.110 | 分析节点2 |
## 配置主机名解析
$ 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
192.168.1.109 fgedu-tiflash-01.fgedu.net.cn
192.168.1.110 fgedu-tiflash-02.fgedu.net.cn
EOF
3.3.2 时间同步配置
## 1. 安装NTP
$ yum install -y ntp
## 2. 配置NTP服务器
$ cat > /etc/ntp.conf << EOF
driftfile /var/lib/ntp/drift
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
server ntp.aliyun.com iburst
server time1.cloud.tencent.com iburst
server time.windows.com iburst
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
EOF
## 3. 启动NTP服务
$ systemctl start ntpd
$ systemctl enable ntpd
## 4. 验证时间同步
$ ntpstat
$ ntpq -p
Part04-生产案例与实战讲解
4.1 硬件选型案例
4.1.1 某互联网公司TiDB集群硬件配置
## 业务规模
– 日活用户:100万+
– 日增数据:50GB
– QPS:10万+
## 硬件配置
### TiDB节点(3台)
– CPU:Intel Xeon Gold 6330 (16核)
– 内存:64GB
– 存储:1TB SSD
– 网络:2×10Gbps
### TiKV节点(6台)
– CPU:Intel Xeon Gold 6330 (16核)
– 内存:64GB
– 存储:2×2TB NVMe SSD
– 网络:2×10Gbps
### PD节点(3台)
– CPU:Intel Xeon Gold 6230 (12核)
– 内存:16GB
– 存储:500GB SSD
– 网络:2×10Gbps
### TiFlash节点(2台)
– CPU:Intel Xeon Gold 6330 (24核)
– 内存:96GB
– 存储:4×2TB NVMe SSD
– 网络:2×10Gbps
## 性能表现
– 读写延迟:< 1ms
- 峰值QPS:15万+
- 数据存储:500GB+
4.2 软件配置案例
4.2.1 操作系统优化配置
## 1. 系统参数优化
$ cat > /etc/sysctl.d/tidb.conf << EOF
# 网络参数
net.core.somaxconn = 32768
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
# 文件系统参数
fs.file-max = 655350
fs.aio-max-nr = 1048576
# 内存参数
vm.swappiness = 0
vm.overcommit_memory = 1
EOF
$ sysctl -p /etc/sysctl.d/tidb.conf
## 2. 限制配置
$ cat > /etc/security/limits.d/tidb.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft core unlimited
* hard core unlimited
EOF
4.3 性能测试案例
4.3.1 硬件性能测试
## 1. CPU性能测试
$ sysbench cpu –cpu-max-prime=20000 run
## 2. 内存性能测试
$ sysbench memory –memory-block-size=1K –memory-total-size=100G –memory-access-mode=rnd run
## 3. 磁盘性能测试
$ fio –name=random-write –ioengine=libaio –rw=randwrite –bs=4k –direct=1 –size=1G –numjobs=4 –runtime=60 –group_reporting
## 4. 网络性能测试
$ iperf3 -s &
$ iperf3 -c 192.168.1.101 -t 60 -P 4
## 测试结果示例
# CPU测试
CPU speed: events per second: 10000.00
# 内存测试
Operations performed: 104857600 (1747626.67 ops/sec)
# 磁盘测试
IOPS: 120000, BW: 468.75 MB/s
# 网络测试
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-60.00 sec 23.5 GBytes 3.38 Gbits/sec 0
Part05-风哥经验总结与分享
5.1 环境规划最佳实践
TiDB环境规划最佳实践:
- 硬件选型:根据业务规模选择合适的硬件配置,优先考虑NVMe SSD和万兆网络
- 软件选择:使用推荐的操作系统版本,及时更新补丁
- 网络规划:使用万兆网络,减少网络延迟,确保网络稳定性
- 存储规划:根据数据量和性能要求选择合适的存储方案
- 扩展性:预留足够的扩展空间,考虑未来业务增长
- 可靠性:使用冗余组件,确保系统高可用
5.2 常见问题与解决方案
5.2.1 硬件选型常见问题
## 1. 存储性能不足
– 问题:TiKV节点IOPS不够,导致性能下降
– 解决方案:
– 更换为NVMe SSD
– 增加TiKV节点数量
– 优化存储参数
## 2. 网络延迟高
– 问题:节点间网络延迟高,影响集群性能
– 解决方案:
– 使用万兆网络
– 优化网络拓扑
– 减少网络设备层级
## 3. 内存不足
– 问题:TiDB或TiKV内存不足,导致OOM
– 解决方案:
– 增加内存容量
– 优化内存参数
– 限制并发连接数
5.2.2 软件配置常见问题
## 1. 时间同步问题
– 问题:节点间时间不同步,导致集群异常
– 解决方案:
– 配置NTP服务器
– 定期检查时间同步状态
– 使用可靠的时间源
## 2. 系统参数不当
– 问题:系统参数配置不当,影响性能
– 解决方案:
– 按照官方建议配置系统参数
– 定期优化系统参数
– 监控系统性能指标
## 3. 防火墙配置
– 问题:防火墙阻止节点间通信
– 解决方案:
– 关闭防火墙或配置正确的规则
– 确保所有必要端口开放
– 测试节点间通信
5.3 技术发展趋势
TiDB环境技术发展趋势:
- 硬件发展:更快的CPU、更大的内存、更高速的存储(如PCIe 5.0 SSD)
- 软件优化:更好的操作系统支持、更智能的参数调优
- 云原生:更好的容器化支持、Kubernetes集成
- 自动化:智能硬件选型、自动环境配置
- 绿色节能:更低的功耗、更高的能效比
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
