本文档风哥主要介绍TiDB服务器配置与选型相关知识,包括TiDB集群服务器角色、TiDB硬件要求、TiDB操作系统要求、TiDB服务器规格选型、TiDB存储规划、TiDB网络规划、TiDB服务器部署、TiDB操作系统调优、TiDB参数优化等内容,风哥教程参考TiDB官方文档部署安装章节,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 TiDB集群服务器角色
TiDB集群由三个核心组件组成,每个组件在服务器上扮演不同的角色:
- TiDB服务器:负责接收客户端请求,执行SQL语句,返回查询结果,是TiDB的计算层。
- TiKV服务器:负责存储数据,是TiDB的存储层,采用分布式事务和复制技术。
- PD服务器:负责集群元数据管理,包括集群拓扑、数据分布、调度决策等。
- TiFlash服务器(可选):列式存储引擎,用于加速分析型查询。
- TiDB:CPU密集型,需要较高的CPU和内存
- TiKV:IO密集型,需要高速存储和足够的内存
- PD:轻量级组件,需要稳定的网络和适量的内存
- TiFlash:存储密集型,需要大容量存储
1.2 TiDB硬件要求
TiDB官方推荐的硬件要求:
– CPU:8核及以上
– 内存:16GB及以上
– 存储:SSD,500GB及以上
– 网络:千兆网卡及以上
# TiKV服务器硬件要求
– CPU:8核及以上
– 内存:32GB及以上
– 存储:NVMe SSD,1TB及以上
– 网络:万兆网卡
# PD服务器硬件要求
– CPU:4核及以上
– 内存:8GB及以上
– 存储:SSD,200GB及以上
– 网络:千兆网卡及以上
# TiFlash服务器硬件要求
– CPU:8核及以上
– 内存:32GB及以上
– 存储:SSD,2TB及以上
– 网络:万兆网卡风哥提示:
1.3 TiDB操作系统要求
TiDB支持的操作系统:
- 主要系统:Oracle Linux 9.3 / RHEL 9.3 / 8.x / 7.x
- 可选系统:国产麒麟操作系统 Kylin v10 SP3、欧拉
- 内核版本:建议使用4.19及以上内核
Part02-生产环境规划与建议
2.1 TiDB服务器规格选型
根据业务规模和性能需求,TiDB服务器规格选型建议:
– TiDB:4核8GB内存,500GB SSD
– TiKV:4核16GB内存,1TB SSD
– PD:2核4GB内存,200GB SSD
– 节点数:3节点(1TiDB+2TiKV+1PD)
# 中型集群(适用于中小型业务)
– TiDB:8核16GB内存,500GB SSD
– TiKV:8核32GB内存,2TB NVMe SSD
– PD:4核8GB内存,200GB SSD
– 节点数:5-7节点(2TiDB+3TiKV+3PD)
# 大型集群(适用于大型业务)
– TiDB:16核32GB内存,1TB SSD
– TiKV:16核64GB内存,4TB NVMe SSD
– PD:4核16GB内存,500GB SSD
– 节点数:10+节点(3+TiDB+5+TiKV+3PD)
2.2 TiDB存储规划
TiDB存储规划建议:
- TiDB:使用SSD存储,建议RAID 10配置,确保数据可靠性。
- TiKV:使用NVMe SSD存储,建议独立磁盘,避免与其他服务共享存储。
- PD:使用SSD存储,建议多路复用,确保元数据安全。
- TiFlash:使用大容量SSD存储,建议独立存储节点。
2.3 TiDB网络规划
TiDB网络规划建议:
- 网络带宽:建议使用万兆网络,确保节点间通信流畅。
- 网络延迟:节点间网络延迟应控制在1ms以内。
- 网络拓扑:建议使用分层网络架构,核心层和接入层分离。
- 安全组:配置合适的安全组规则,限制不必要的网络访问。
Part03-生产环境项目实施方案
3.1 TiDB服务器部署
3.1.1 服务器准备
# 检查CPU
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 16
On-line CPU(s) list: 0-15
Thread(s) per core: 2
Core(s) per socket: 8
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 85
Model name: Intel(R) Xeon(R) Gold 6240 CPU @ 2.60GHz
Stepping: 7
CPU MHz: 2600.000
CPU max MHz: 3900.0000
CPU min MHz: 1200.0000
BogoMIPS: 5200.00
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
L3 cache: 22528K
NUMA node0 CPU(s): 0-15
# 检查内存
$ free -h
total used free shared buff/cache available
Mem: 62G 1.2G 60G 164M 1.1G 60G
Swap: 16G 0B 16G学习交流加群风哥QQ113257174
# 检查磁盘
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
sda1 xfs 56a7e3f8-1c0a-4b8c-9c5d-1a2b3c4d5e6f /boot
sda2 LVM2_member 12345678-1234-1234-1234-1234567890ab
├─rhel-root xfs 87654321-8765-8765-8765-876543210987 /
└─rhel-swap swap abcdef12-abcdef-abcdef-abcdef-abcdef [SWAP]
sdb ext4 11223344-5566-7788-9900-aabbccddeeff /tidb
# 检查网络
$ ifconfig
eth0: flags=4163
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe97:8f3a prefixlen 64 scopeid 0x20
ether 08:00:27:97:8f:3a txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 12345678 (11.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12345 bytes 12345678 (11.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 检查操作系统版本
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 8.6 (Ootpa)
3.1.2 系统初始化
$ systemctl stop firewalld
$ systemctl disable firewalld
# 关闭SELINUX
$ setenforce 0
$ sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
# 关闭透明大页
$ echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled
$ echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag
$ cat >> /etc/rc.local << EOF
echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag
EOF
$ chmod +x /etc/rc.local
# 关闭NUMA
$ cat >> /etc/default/grub << EOF
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet numa=off"
EOF
$ grub2-mkconfig -o /boot/grub2/grub.cfg
# 设置系统限制
$ cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
* soft stack 20480
* hard stack 20480
EOF
# 配置时间同步
$ yum install -y chrony
$ systemctl start chronyd
$ systemctl enable chronyd
$ chronyc sources
3.2 TiDB操作系统调优
$ cat >> /etc/sysctl.conf << EOF # TiDB 调优参数 net.core.somaxconn = 32768 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_keepalive_probes = 3 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 0 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 0 vm.overcommit_memory = 1 vm.max_map_count = 1048576 EOF $ sysctl -p # 配置IO调度器 $ echo 'deadline' > /sys/block/sdb/queue/scheduler
$ cat >> /etc/udev/rules.d/60-scheduler.rules << EOF ACTION=="add|change", KERNEL=="sdb", ATTR{queue/scheduler}="deadline" EOF
3.3 TiDB参数优化
3.3.1 TiDB参数优化
[server]
port = 4000
host = “0.0.0.0”
[performance]
max-procs = 8
stmt-count-limit = 10000
[memory]
okta-query-memory-limit = “8GB”
[txn]
stmt-timeout = 30
[log]
level = “info”
file = “/tidb/log/tidb.log”
3.3.2 TiKV参数优化
[server]
addr = “0.0.0.0:20160”
[storage]
engine = “rocksdb”
data-dir = “/tidb/fgdata/tikv”
[rocksdb]
max-open-files = 4096
[raftdb]
max-open-files = 4096
[pd]
endpoints = [“http://192.168.1.101:2379”, “http://192.168.1.102:2379”, “http://192.168.1.103:2379”]
[server]
high-concurrency = true
3.3.3 PD参数优化
[server]
addr = “0.0.0.0:2379”
data-dir = “/tidb/fgdata/pd”
[cluster]
id = “fgedu-tidb-cluster”
name = “fgedu-tidb-cluster”
[replication]
max-replicas = 3
Part04-生产案例与实战讲解
4.1 小型TiDB集群部署案例
适用于测试环境或小型应用,节点配置如下:
– 服务器数量:3台
– 服务器规格:4核16GB内存,500GB SSD
– 网络:千兆网络
# 部署架构
– 节点1:TiDB + PD
– 节点2:TiKV
– 节点3:TiKV
# 部署步骤
1. 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2. 初始化集群
$ tiup cluster deploy fgedu-tidb-cluster v7.1.0 ./topology.yaml –user root -p
3. 启动集群
$ tiup cluster start fgedu-tidb-cluster
4. 验证集群状态
$ tiup cluster display fgedu-tidb-cluster
# 输出示例
Cluster type: tidb
Cluster name: fgedu-tidb-cluster
Cluster version: v7.1.0
Deploy user: root
SSH type: builtin
Dashboard URL: http://192.168.1.101:2379/dashboard
ID Role Host Ports Status Data Dir Deploy Dir
— —- —- —– —— ——– ———-
192.168.1.101:2379 pd 192.168.1.101 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.101:4000 tidb 192.168.1.101 4000/10080 Up – /tidb/app/tidb
192.168.1.102:20160 tikv 192.168.1.102 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.103:20160 tikv 192.168.1.103 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
4.2 中型TiDB集群部署案例
适用于中小型业务,节点配置如下:
– 服务器数量:7台
– TiDB节点:2台,8核16GB内存,500GB SSD
– TiKV节点:3台,8核32GB内存,2TB NVMe SSD
– PD节点:3台,4核8GB内存,200GB SSD
– 网络:万兆网络
# 部署架构
– 节点1-2:TiDB
– 节点3-5:TiKV
– 节点6-8:PD
# 部署步骤
1. 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2. 初始化集群
$ tiup cluster deploy fgedu-tidb-cluster v7.1.0 ./topology.yaml –user root -p
3. 启动集群
$ tiup cluster start fgedu-tidb-cluster
4. 验证集群状态
$ tiup cluster display fgedu-tidb-cluster
# 输出示例
Cluster type: tidb
Cluster name: fgedu-tidb-cluster
Cluster version: v7.1.0
Deploy user: root
SSH type: builtin
Dashboard URL: http://192.168.1.101:2379/dashboard
ID Role Host Ports Status Data Dir Deploy Dir
— —- —- —– —— ——– ———-
192.168.1.101:2379 pd 192.168.1.101 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.102:2379 pd 192.168.1.102 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.103:2379 pd 192.168.1.103 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.104:4000 tidb 192.168.1.104 4000/10080 Up – /tidb/app/tidb
192.168.1.105:4000 tidb 192.168.1.105 4000/10080 Up – /tidb/app/tidb
192.168.1.106:20160 tikv 192.168.1.106 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.107:20160 tikv 192.168.1.107 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.108:20160 tikv 192.168.1.108 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
4.3 大型TiDB集群部署案例
适用于大型业务,节点配置如下:
– 服务器数量:13台
– TiDB节点:4台,16核32GB内存,1TB SSD
– TiKV节点:6台,16核64GB内存,4TB NVMe SSD
– PD节点:3台,4核16GB内存,500GB SSD
– 网络:万兆网络
# 部署架构
– 节点1-4:TiDB
– 节点5-10:TiKV
– 节点11-13:PD
# 部署步骤
1. 安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2. 初始化集群
$ tiup cluster deploy fgedu-tidb-cluster v7.1.0 ./topology.yaml –user root -p
3. 启动集群
$ tiup cluster start fgedu-tidb-cluster
4. 验证集群状态
$ tiup cluster display fgedu-tidb-cluster
# 输出示例
Cluster type: tidb
Cluster name: fgedu-tidb-cluster
Cluster version: v7.1.0
Deploy user: root
SSH type: builtin
Dashboard URL: http://192.168.1.101:2379/dashboard
ID Role Host Ports Status Data Dir Deploy Dir
— —- —- —– —— ——– ———-
192.168.1.101:2379 pd 192.168.1.101 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.102:2379 pd 192.168.1.102 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.103:2379 pd 192.168.1.103 2379/2380 Up /tidb/fgdata/pd /tidb/app/pd
192.168.1.104:4000 tidb 192.168.1.104 4000/10080 Up – /tidb/app/tidb
192.168.1.105:4000 tidb 192.168.1.105 4000/10080 Up – /tidb/app/tidb
192.168.1.106:4000 tidb 192.168.1.106 4000/10080 Up – /tidb/app/tidb
192.168.1.107:4000 tidb 192.168.1.107 4000/10080 Up – /tidb/app/tidb
192.168.1.108:20160 tikv 192.168.1.108 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.109:20160 tikv 192.168.1.109 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.110:20160 tikv 192.168.1.110 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.111:20160 tikv 192.168.1.111 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.112:20160 tikv 192.168.1.112 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
192.168.1.113:20160 tikv 192.168.1.113 20160/20180 Up /tidb/fgdata/tikv /tidb/app/tikv
Part05-风哥经验总结与分享
5.1 TiDB服务器选型最佳实践
TiDB服务器选型最佳实践:
- 根据业务规模选型:小型业务选择4核16GB,中型业务选择8核32GB,大型业务选择16核64GB及以上。
- 存储选择:TiKV建议使用NVMe SSD,TiDB和PD使用普通SSD。
- 网络配置:建议使用万兆网络,确保节点间通信延迟低。
- 高可用考虑:每个组件至少部署3个节点,确保集群高可用。
- 扩展性考虑:预留足够的扩容空间,便于后期业务增长。
5.2 TiDB性能优化建议
## 硬件层面
– 使用NVMe SSD存储
– 配置足够的内存
– 使用万兆网络
– 合理规划存储容量
## 系统层面
– 关闭透明大页
– 关闭NUMA
– 配置合适的IO调度器
– 优化内核参数
## 数据库层面
– 合理设置TiDB参数
– 优化TiKV RocksDB参数
– 合理设置PD调度策略
– 定期进行数据压缩
## 应用层面
– 使用连接池
– 优化SQL语句
– 合理设计表结构
– 使用合适的索引
5.3 TiDB维护建议
TiDB维护建议:
- 定期备份:使用BR工具进行物理备份,确保数据安全。
- 监控告警:部署Prometheus和Grafana,监控集群状态。
- 定期检查:检查集群健康状态,及时发现问题。
- 版本升级:定期升级到最新版本,获取新特性和 bug 修复。
- 容量规划:定期评估存储和计算资源使用情况,提前规划扩容。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
