1. 首页 > 国产数据库教程 > TiDB教程 > 正文

tidb教程FG151-TiDB服务器配置与选型

本文档风哥主要介绍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集群服务器角色特点:

  • TiDB:CPU密集型,需要较高的CPU和内存
  • TiKV:IO密集型,需要高速存储和足够的内存
  • PD:轻量级组件,需要稳定的网络和适量的内存
  • TiFlash:存储密集型,需要大容量存储

1.2 TiDB硬件要求

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及以上内核
风哥提示:选择操作系统时,应考虑稳定性和官方支持情况,建议使用RHEL/CentOS/Oracle Linux等主流发行版。更多视频教程www.fgedu.net.cn

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以内。
  • 网络拓扑:建议使用分层网络架构,核心层和接入层分离。
  • 安全组:配置合适的安全组规则,限制不必要的网络访问。
生产环境建议:网络规划是TiDB集群性能的关键因素,建议使用万兆网络,确保节点间通信延迟低。学习交流加群风哥微信: itpux-com

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 mtu 1500
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参数优化

# TiDB配置文件示例(tidb.toml)
[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参数优化

# TiKV配置文件示例(tikv.toml)
[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参数优化

# PD配置文件示例(pd.toml)
[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

风哥提示:参数优化应根据实际硬件配置和业务需求进行调整,建议在测试环境验证后再应用到生产环境。学习交流加群风哥QQ113257174

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

生产环境建议:大型集群部署时,建议使用负载均衡器分发TiDB请求,确保服务高可用。更多学习教程公众号风哥教程itpux_com

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 修复。
  • 容量规划:定期评估存储和计算资源使用情况,提前规划扩容。
风哥提示:TiDB服务器选型和配置是一个综合性的工作,需要考虑业务需求、性能要求、可靠性要求等多个因素。建议在部署前进行充分的测试和评估。from tidb视频:www.itpux.com

持续改进:TiDB服务器配置和选型是一个动态过程,需要根据业务发展和技术进步不断优化。建议建立定期评估和优化的机制,持续提升集群性能和可靠性。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息