1. TiDB集群部署前的环境准备
在Linux系统上部署TiDB分布式数据库集群,首先需要确保基础环境满足要求。根据我的实际部署经验,以下是关键准备工作:
1.1 系统资源检查
TiDB作为分布式数据库对硬件资源有一定要求,特别是生产环境部署时:
- 磁盘空间:至少30GB可用空间,建议50GB以上。我曾遇到一个案例,客户在虚拟机只分配了25GB空间,结果在部署过程中因空间不足导致失败,不得不重新规划存储。
- 内存:每个节点至少8GB,16GB以上为佳。TiKV组件对内存需求较高。
- CPU:建议4核以上,生产环境推荐8核及以上。
提示:使用
df -h检查磁盘空间,free -h查看内存,nproc查看CPU核心数。
1.2 系统配置调整
-
关闭防火墙:分布式组件间需要大量通信,防火墙可能导致连接问题。执行:
bash复制systemctl stop firewalld systemctl disable firewalld如果因安全策略不能关闭防火墙,需要开放以下端口:2379/2380(PD), 4000(TiDB), 20160/20180(TiKV)等。
-
SELinux设置:建议临时禁用:
bash复制setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config -
时间同步:集群节点间时间必须同步,否则可能导致数据一致性问题。建议安装配置NTP:
bash复制yum install -y ntp systemctl start ntpd systemctl enable ntpd
2. TiUP工具安装与配置
TiUP是TiDB生态中的包管理工具,极大简化了部署和维护流程。
2.1 安装TiUP
官方推荐的一键安装方式:
bash复制curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
这个命令会:
- 下载安装脚本
- 自动检测系统环境
- 将tiup安装到
~/.tiup目录 - 添加环境变量到
~/.bash_profile
2.2 自定义安装路径
默认安装路径可能不适合生产环境,我们可以通过环境变量指定新位置:
bash复制export TIUP_HOME=/data/tidb/tiup
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
2.3 环境变量配置
安装完成后需要更新PATH:
bash复制echo 'export PATH=$TIUP_HOME/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
常见问题排查:
- 如果之前安装过默认路径的tiup,需要手动清理
~/.bash_profile中的旧路径 - 使用
which tiup验证是否找到正确路径 tiup --version检查版本是否正常显示
3. 集群拓扑文件配置
3.1 生成拓扑模板
使用tiup生成基础拓扑文件:
bash复制tiup cluster template > /data/tidb/topology.yaml
3.2 关键配置解析
生产环境需要仔细调整以下参数:
yaml复制global:
user: "tidb" # 运行TiDB服务的专用用户
ssh_port: 22
deploy_dir: "/data/tidb/tidb-deploy" # 部署文件目录
data_dir: "/data/tidb/tidb-data" # 数据存储目录
listen_host: 192.168.50.20 # 监听IP
monitored:
node_exporter_port: 9100 # 节点监控端口
blackbox_exporter_port: 9115 # 服务监控端口
pd_servers:
- host: 192.168.50.20
# 生产环境建议至少3个PD节点
# - host: 192.168.50.21
# - host: 192.168.50.22
tidb_servers:
- host: 192.168.50.20
# 可配置多个TiDB节点实现负载均衡
tikv_servers:
- host: 192.168.50.20
# 生产环境建议至少3个TiKV节点
# 可配置每个节点的数据目录:
# data_dir: "/data1/tikv,/data2/tikv"
重要提示:单节点部署仅适合测试环境,生产环境必须部署多节点集群以确保高可用。
4. 集群部署与启动
4.1 执行部署命令
bash复制tiup cluster deploy demo_tidb v8.5.5 /data/tidb/topology.yaml --user root -p
参数说明:
demo_tidb:集群名称v8.5.5:TiDB版本--user root:SSH连接用户-p:交互式输入SSH密码
部署过程会:
- 下载各组件包
- 初始化目录结构
- 生成配置文件
- 分发文件到各节点
4.2 集群启动
首次启动建议初始化root密码:
bash复制tiup cluster start demo_tidb --init
系统会提示设置MySQL root密码。如果不需要密码验证,可以使用普通启动:
bash复制tiup cluster start demo_tidb
4.3 验证集群状态
bash复制tiup cluster display demo_tidb
正常输出应显示所有组件状态为"Up"。如果出现异常,可以查看日志:
bash复制tiup cluster audit
# 或查看特定组件日志
tiup cluster logs demo_tidb -N 192.168.50.20 -R tidb
5. 集群管理与维护
5.1 常用管理命令
bash复制# 停止集群
tiup cluster stop demo_tidb
# 重启集群
tiup cluster restart demo_tidb
# 销毁集群(谨慎使用)
tiup cluster destroy demo_tidb
# 查看监控页面(默认端口3000)
http://192.168.50.20:3000
5.2 客户端连接
使用MySQL客户端连接TiDB:
bash复制mysql -h 192.168.50.20 -P 4000 -u root -p
TiDB兼容MySQL协议,支持大多数MySQL客户端工具,如:
- MySQL Workbench
- Navicat
- DBeaver
5.3 性能调优建议
-
TiKV配置优化:
yaml复制tikv_servers: - host: 192.168.50.20 config: server.grpc-concurrency: 8 rocksdb.max-background-jobs: 8 raftstore.store-pool-size: 4 -
PD调度参数:
yaml复制pd_servers: - host: 192.168.50.20 config: schedule.high-space-ratio: 0.7 schedule.low-space-ratio: 0.8 -
监控告警设置:通过Grafana配置关键指标告警,如TiKV空间使用率、PD调度延迟等。
6. 生产环境部署经验分享
6.1 多节点部署要点
- PD节点:至少3个节点,且节点数为奇数
- TiKV节点:至少3个节点,每个节点配置多个数据目录
- TiDB节点:根据应用负载决定数量,通常2-4个
6.2 硬件选型建议
- TiKV节点:高性能SSD,建议NVMe;内存越大越好
- TiDB节点:中等配置即可,CPU核心数更重要
- PD节点:对硬件要求不高,但需要稳定网络
6.3 常见问题解决
-
部署失败:
- 检查磁盘空间是否充足
- 确认网络连通性,特别是SSH连接
- 查看
/data/tidb/tiup/logs下的日志文件
-
组件启动失败:
- 检查端口是否冲突
- 确认系统资源是否足够
- 验证目录权限是否正确
-
性能问题:
- 监控TiKV的CPU和IO使用率
- 检查热点Region分布
- 分析慢查询日志
6.4 备份与恢复
使用BR工具进行备份:
bash复制tiup br backup full --pd "192.168.50.20:2379" \
--storage "local:///data/backup" \
--log-file backup.log
恢复备份:
bash复制tiup br restore full --pd "192.168.50.20:2379" \
--storage "local:///data/backup" \
--log-file restore.log
在实际生产部署中,我发现TiDB的弹性扩展能力非常出色。曾经有一个客户业务快速增长,我们仅用2小时就完成了从3节点到8节点的扩容,全程业务无感知。这得益于TiDB的分布式架构和TiUP工具的优秀设计。