鲲鹏服务器上部署TiDB数据库的完整实战指南
1. 环境准备与前置检查
在国产鲲鹏服务器上部署TiDB数据库前,需要做好充分的环境准备。我最近在Kylin Linux Advanced Server V10(ARM64架构)上完成了TiDB v8.5.5的部署,这里分享完整的实战经验。
1.1 硬件配置要求
TiDB作为分布式数据库,对硬件资源有一定要求。我的测试环境配置如下:
| 组件 | 推荐配置 | 我的实际配置 |
|---|---|---|
| CPU | 16核以上 | 12核鲲鹏920 |
| 内存 | 64GB以上 | 48GB DDR4 |
| 存储 | NVMe SSD, 500GB以上 | 1TB SATA SSD |
| 网络 | 10Gbps网卡 | 千兆以太网 |
提示:虽然我的配置略低于推荐值,但对于测试和学习环境完全够用。生产环境建议严格遵循官方推荐配置。
1.2 操作系统准备
Kylin Linux作为国产操作系统,在ARM架构上运行良好。部署前需要确认:
# 检查系统版本 cat /etc/kylin-release # 检查CPU架构 uname -m输出应为:
Kylin Linux Advanced Server release V10 (Tercel) aarch641.3 系统参数优化
为确保TiDB性能,需要对系统参数进行调整:
# 修改文件描述符限制 echo "* soft nofile 1000000" >> /etc/security/limits.conf echo "* hard nofile 1000000" >> /etc/security/limits.conf # 调整内核参数 echo "vm.swappiness = 0" >> /etc/sysctl.conf echo "net.core.somaxconn = 32768" >> /etc/sysctl.conf sysctl -p2. TiUP工具安装与配置
TiUP是TiDB官方推荐的部署工具,极大简化了部署流程。
2.1 安装TiUP
在Kylin系统上安装TiUP需要注意ARM架构适配:
# 安装TiUP curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh # 使环境变量生效 source ~/.bashrc # 验证安装 tiup --version典型输出:
1.16.4 v1.16.2-nightly-90 Go Version: go1.24.1 Git Ref: master GitHash: 908be86076919952e4c3f1e52c214c2f45be14e92.2 安装cluster组件
TiDB集群管理需要单独安装cluster组件:
tiup install cluster安装过程中会自动下载ARM架构的二进制包,如:
download https://tiup-mirrors.pingcap.com/cluster-v1.16.4-linux-arm64.tar.gz3. 集群拓扑配置
单机部署需要精心设计拓扑结构,合理分配资源。
3.1 创建部署目录
mkdir -p /opt/tidb/{tidb-deploy,tidb-data}目录结构说明:
/opt/tidb/tidb-deploy:存放二进制文件和配置文件/opt/tidb/tidb-data:存放数据文件
3.2 编写topology.yaml
创建集群拓扑配置文件:
global: user: "tidb" ssh_port: 22 deploy_dir: "/opt/tidb/tidb-deploy" data_dir: "/opt/tidb/tidb-data" server_configs: tidb: {} tikv: storage.block-cache.capacity: "10GB" pd: {} pd_servers: - host: 192.168.0.119 tidb_servers: - host: 192.168.0.119 port: 4000 status_port: 10080 tikv_servers: - host: 192.168.0.119 port: 20160 status_port: 20180关键参数说明:
storage.block-cache.capacity:TiKV缓存大小,建议不超过物理内存的45%port:各组件服务端口,确保不冲突status_port:监控指标端口
4. 集群部署与初始化
4.1 执行部署命令
tiup cluster deploy tidb-single v8.5.5 topology.yaml --user root -p参数解释:
tidb-single:集群名称v8.5.5:TiDB版本--user root:使用root权限初始化-p:SSH密码登录
4.2 解决sudo权限问题
部署时可能遇到错误:
executor.ssh.execute_failed sudo: no tty present and no askpass program specified解决方法:
visudo # 添加以下内容 tidb ALL=(ALL) NOPASSWD: ALL然后重新执行部署命令。
4.3 目录权限设置
chown -R tidb.tidb /opt/tidb5. 集群启动与验证
5.1 初始化并启动集群
tiup cluster start tidb-single --init成功启动后会显示root密码:
The root password of TiDB database has been changed. The new password is: 'e@25*17b-t68DA+Lgv'重要:该密码只显示一次,务必妥善保存!
5.2 安装MySQL客户端
yum -y install mariadb5.3 连接TiDB数据库
mysql -h127.0.0.1 -P4000 -uroot -p登录后建议修改密码:
ALTER USER 'root'@'%' IDENTIFIED BY 'YourNewPassword'; FLUSH PRIVILEGES;5.4 验证集群状态
SELECT tidb_version();预期输出:
Release Version: v8.5.5 Edition: Community Store: tikv6. 运维与监控
6.1 常用管理命令
# 查看集群状态 tiup cluster display tidb-single # 停止集群 tiup cluster stop tidb-single # 重启集群 tiup cluster restart tidb-single6.2 访问监控面板
TiDB集成了Prometheus和Grafana,监控面板地址:
- Grafana: http://服务器IP:3000
- Dashboard: http://服务器IP:2379/dashboard
默认用户名/密码:admin/admin
7. 性能调优建议
7.1 TiKV参数优化
修改topology.yaml中的tikv配置:
tikv: storage.block-cache.capacity: "12GB" rocksdb.defaultcf.block-cache-size: "8GB" rocksdb.writecf.block-cache-size: "2GB"7.2 系统层面优化
# 调整预读值 echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf echo "vm.dirty_ratio = 20" >> /etc/sysctl.conf sysctl -p8. 常见问题排查
8.1 端口冲突问题
错误现象:
Address already in use解决方法:
- 检查端口占用:
netstat -tunlp | grep 端口号 - 修改
topology.yaml中的端口配置 - 重新部署
8.2 内存不足问题
错误现象:
OOM killer terminated TiKV解决方法:
- 降低
storage.block-cache.capacity值 - 增加服务器内存
- 减少并发连接数
8.3 ARM架构兼容性问题
错误现象:
illegal instruction解决方法:
- 确认下载的是ARM版本组件
- 检查CPU指令集支持:
cat /proc/cpuinfo | grep features - 联系PingCAP技术支持
在实际部署过程中,我发现Kylin Linux对ARM架构的支持非常完善,TiDB在鲲鹏服务器上的性能表现也相当出色。对于国产化替代场景,这套组合方案值得推荐。