本文档详细介绍TiDB三节点集群的部署全流程,包括环境准备、部署配置、启动验证等内容。风哥教程参考TiDB官方文档部署安装相关内容,适合DBA和系统管理员在部署小型生产环境或测试环境时使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 三节点集群概念
TiDB三节点集群是指由三个节点组成的TiDB集群,每个节点同时运行TiDB、TiKV和PD组件。
- 特点:部署简单、资源利用率高、适合小规模环境
- 适用场景:测试环境、小型生产环境、开发环境
- 优势:成本低、部署快、管理简单
- 资源利用率高:每个节点同时运行多个组件
- 部署简单:只需要3台服务器
- 成本低:减少硬件投入
- 管理方便:节点数量少,管理复杂度低
1.2 三节点集群架构
TiDB三节点集群的架构:
- 节点1:TiDB + TiKV + PD
- 节点2:TiDB + TiKV + PD
- 节点3:TiDB + TiKV + PD
1.3 部署原则
TiDB三节点集群部署的基本原则:
- 高可用性:每个组件都有多个副本
- 负载均衡:组件分布在不同节点
- 资源分配:合理分配CPU、内存和存储资源
- 网络优化:确保节点间网络通信顺畅
- 安全配置:设置合理的安全参数
Part02-生产环境规划与建议
2.1 环境准备
2.1.1 系统准备
## 操作系统要求
– CentOS 7.3+ / RHEL 7.3+ / Ubuntu 16.04+
– 内核版本:3.10+
– 系统架构:x86_64风哥提示:
## 系统配置
$ for host in node1 node2 node3; do
ssh $host “yum update -y”
ssh $host “yum install -y curl tar openssh-clients sudo python3”
ssh $host “systemctl stop firewalld && systemctl disable firewalld”
ssh $host “setenforce 0 && sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config”
ssh $host “echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled”
ssh $host “echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag”
ssh $host “echo ‘* soft nofile 65536’ >> /etc/security/limits.conf”
ssh $host “echo ‘* hard nofile 65536’ >> /etc/security/limits.conf”
ssh $host “mkdir -p /tidb/app /tidb/fgdata /tidb/log”
ssh $host “chown -R tidb:tidb /tidb”
done
2.1.2 网络准备
## 主机名配置
$ hostnamectl set-hostname node1
$ hostnamectl set-hostname node2
$ hostnamectl set-hostname node3
## 主机名解析
$ cat >> /etc/hosts << EOF
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
EOF
## SSH免密登录
$ ssh-keygen -t rsa -N ""
$ for host in node1 node2 node3; do
ssh-copy-id $host
done
2.2 硬件要求
## 三节点集群硬件配置
### 每个节点配置
– CPU:8-16核
– 内存:32-64GB
– 存储:
– 系统盘:200GB SSD
– 数据盘:1TB NVMe SSD
– 网络:万兆网卡
## 存储规划
– TiDB数据:/tidb/fgdata/tidb
– TiKV数据:/tidb/fgdata/tikv
– PD数据:/tidb/fgdata/pd
– 日志:/tidb/log
2.3 网络要求
## 网络带宽
– 节点间带宽:万兆以上
– 客户端访问:千兆以上
## 网络延迟
– 节点间延迟:< 1ms
## 端口规划
- TiDB:4000(业务)、10080(状态)
- TiKV:20160(服务)、20180(状态)
- PD:2379(客户端)、2380(集群)
## 防火墙配置
$ for host in node1 node2 node3; do
ssh $host "firewall-cmd --permanent --add-port=22/tcp"
ssh $host "firewall-cmd --permanent --add-port=4000/tcp"
ssh $host "firewall-cmd --permanent --add-port=10080/tcp"
ssh $host "firewall-cmd --permanent --add-port=2379/tcp"
ssh $host "firewall-cmd --permanent --add-port=2380/tcp"
ssh $host "firewall-cmd --permanent --add-port=20160/tcp"
ssh $host "firewall-cmd --permanent --add-port=20180/tcp"
ssh $host "firewall-cmd --reload"
done
Part03-生产环境项目实施方案
3.1 拓扑设计
3.1.1 拓扑文件设计
## 三节点集群拓扑
$ cat > three-node-topology.yaml << EOF
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/app"
data_dir: "/tidb/fgdata"
arch: "amd64"
server_configs:
tidb:
log.level: "info"
performance.max-procs: 8
tikv:
log.level: "info"
performance.max-procs: 8
pd:
log.level: "info"
replication.enable-placement-rules: true
pd_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
tidb_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
tikv_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
EOF
3.1.2 配置参数说明
## global配置
– user: 部署用户,建议使用tidb
– deploy_dir: 部署目录
– data_dir: 数据目录
– arch: 系统架构
## server_configs配置
– tidb.log.level: 日志级别
– tidb.performance.max-procs: 最大CPU核心数
– tikv.log.level: 日志级别
– tikv.performance.max-procs: 最大CPU核心数
– pd.log.level: 日志级别
– pd.replication.enable-placement-rules: 启用placement rules
## 组件配置
– pd_servers: PD节点配置
– tidb_servers: TiDB节点配置
– tikv_servers: TiKV节点配置
3.2 部署流程
3.2.1 安装TiUP
## 下载并安装TiUP
$ curl –proto ‘=https’ –tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
## 重新加载环境变量
$ source ~/.bash_profile
## 验证TiUP安装
$ tiup –version
## 输出示例
TiUP Version: 1.15.0
Git Commit Hash: abcdef1234
Git Branch: release-1.15
Build Time: 2026-04-01 00:00:00 +0000
Go Version: go1.20.0
## 安装cluster组件
$ tiup install cluster
3.2.2 部署集群
## 1. 部署集群
$ tiup cluster deploy three-node-cluster v7.5.0 three-node-topology.yaml –user root
## 2. 查看部署状态
$ tiup cluster list
## 3. 启动集群
$ tiup cluster start three-node-cluster
## 4. 查看集群状态
$ tiup cluster display three-node-cluster
## 5. 验证集群
$ tiup cluster health three-node-cluster
3.2.3 连接测试
## 1. 连接TiDB
$ mysql -h 192.168.1.101 -P 4000 -u root
## 2. 查看集群信息
mysql> SELECT * FROM information_schema.cluster_info;
## 3. 创建测试数据库
mysql> CREATE DATABASE fgedudb;
## 4. 创建测试表
mysql> USE fgedudb;
mysql> CREATE TABLE fgedu_users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100));
## 5. 插入测试数据
mysql> INSERT INTO fgedu_users VALUES (1, ‘fgedu01’, ‘fgedu01@fgedu.net.cn’);
mysql> INSERT INTO fgedu_users VALUES (2, ‘fgedu02’, ‘fgedu02@fgedu.net.cn’);
mysql> INSERT INTO fgedu_users VALUES (3, ‘fgedu03’, ‘fgedu03@fgedu.net.cn’);
## 6. 查询测试数据
mysql> SELECT * FROM fgedu_users;
## 7. 退出
mysql> EXIT;
3.3 配置管理
3.3.1 查看配置
## 查看集群配置
$ tiup cluster config three-node-cluster
## 查看TiDB配置
$ tiup cluster config three-node-cluster –component tidb
## 查看TiKV配置
$ tiup cluster config three-node-cluster –component tikv
## 查看PD配置
$ tiup cluster config three-node-cluster –component pd
3.3.2 修改配置
## 编辑集群配置
$ tiup cluster edit-config three-node-cluster
## 示例配置修改
server_configs:
tidb:
log.level: “info”
performance.max-procs: 8
prepared-plan-cache.enable: true
tikv:
log.level: “info”
performance.max-procs: 8
storage.scheduler-worker-pool-size: 4
pd:
log.level: “info”
replication.enable-placement-rules: true
replication.max-replicas: 3
## 应用配置变更
$ tiup cluster reload three-node-cluster
Part04-生产案例与实战讲解
4.1 部署实战案例
4.1.1 完整部署过程
## 1. 环境准备
$ for host in node1 node2 node3; do
echo “=== 配置 $host ===”
ssh $host “hostnamectl set-hostname $host”
ssh $host “yum update -y”
ssh $host “yum install -y curl tar openssh-clients sudo python3”
ssh $host “systemctl stop firewalld && systemctl disable firewalld”
ssh $host “setenforce 0 && sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config”
ssh $host “echo ‘never’ > /sys/kernel/mm/transparent_hugepage/enabled”
ssh $host “echo ‘never’ > /sys/kernel/mm/transparent_hugepage/defrag”
ssh $host “echo ‘* soft nofile 65536’ >> /etc/security/limits.conf”
ssh $host “echo ‘* hard nofile 65536’ >> /etc/security/limits.conf”
ssh $host “mkdir -p /tidb/app /tidb/fgdata /tidb/log”
ssh $host “chown -R tidb:tidb /tidb”
done
## 2. 网络配置
$ cat >> /etc/hosts << EOF
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
EOF
## 3. SSH免密登录
$ ssh-keygen -t rsa -N ""
$ for host in node1 node2 node3; do
ssh-copy-id $host
done
## 4. 安装TiUP
$ curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
$ source ~/.bash_profile
$ tiup install cluster
## 5. 创建拓扑文件
$ cat > three-node-topology.yaml << EOF
global:
user: "tidb"
ssh_port: 22
deploy_dir: "/tidb/app"
data_dir: "/tidb/fgdata"
arch: "amd64"
server_configs:
tidb:
log.level: "info"
performance.max-procs: 8
tikv:
log.level: "info"
performance.max-procs: 8
pd:
log.level: "info"
replication.enable-placement-rules: true
pd_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
tidb_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
tikv_servers:
- host: 192.168.1.101
- host: 192.168.1.102
- host: 192.168.1.103
EOF
## 6. 部署集群
$ tiup cluster deploy three-node-cluster v7.5.0 three-node-topology.yaml --user root
## 7. 启动集群
$ tiup cluster start three-node-cluster
## 8. 验证集群
$ tiup cluster display three-node-cluster
$ tiup cluster health three-node-cluster
4.2 验证案例
4.2.1 功能验证
## 1. 连接测试
$ mysql -h 192.168.1.101 -P 4000 -u root -e “SELECT version();”
## 2. 数据库操作测试
$ mysql -h 192.168.1.101 -P 4000 -u root << EOF
CREATE DATABASE fgedudb;
USE fgedudb;
CREATE TABLE fgedu_employees (
id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50),
salary DECIMAL(10,2)
);
INSERT INTO fgedu_employees VALUES (1, '张三', '技术部', 10000.00);
INSERT INTO fgedu_employees VALUES (2, '李四', '市场部', 8000.00);
INSERT INTO fgedu_employees VALUES (3, '王五', '财务部', 9000.00);
SELECT * FROM fgedu_employees;
EOF
## 3. 高可用测试
$ tiup cluster stop three-node-cluster -N 192.168.1.101:4000
$ mysql -h 192.168.1.102 -P 4000 -u root -e "SELECT * FROM fgedudb.fgedu_employees;"
$ tiup cluster start three-node-cluster -N 192.168.1.101:4000
## 4. 性能测试
$ tiup bench tpcc --db fgedudb --host 192.168.1.101 --port 4000 --user root --warehouses 10 --time 60s
4.3 故障排除
4.3.1 常见问题
## 1. 部署失败
– 问题:部署过程中失败
– 解决方案:
– 检查网络连接
– 检查SSH免密登录
– 检查防火墙设置
– 查看部署日志
## 2. 集群启动失败
– 问题:集群无法启动
– 解决方案:
– 查看组件日志
– 检查端口占用
– 检查配置文件
– 检查资源使用情况
## 3. 连接失败
– 问题:无法连接到TiDB
– 解决方案:
– 检查TiDB服务状态
– 检查网络连接
– 检查防火墙设置
– 检查用户权限
## 4. 性能问题
– 问题:查询性能差
– 解决方案:
– 优化SQL语句
– 调整配置参数
– 检查硬件资源
– 检查网络延迟
Part05-风哥经验总结与分享
5.1 最佳实践
TiDB三节点集群部署最佳实践:
- 环境准备:确保系统和网络环境满足要求
- 资源分配:合理分配CPU、内存和存储资源
- 配置优化:根据实际负载调整配置参数
- 监控部署:部署完善的监控系统
- 备份策略:制定完善的备份和恢复方案
- 定期维护:定期检查和维护集群状态
- 文档记录:详细记录部署和配置过程
5.2 性能优化
## 1. TiDB优化
– 调整max-procs参数
– 启用prepared plan cache
– 调整txn相关参数
## 2. TiKV优化
– 调整max-procs参数
– 调整scheduler-worker-pool-size
– 优化存储配置
## 3. PD优化
– 调整调度参数
– 优化replication配置
– 调整leader选举策略
## 4. 系统优化
– 调整内核参数
– 优化文件系统
– 调整网络参数
## 5. SQL优化
– 合理使用索引
– 优化查询语句
– 避免全表扫描
– 使用合适的分区策略
5.3 维护技巧
TiDB三节点集群维护技巧:
- 定期检查:定期检查集群状态和组件健康状况
- 日志管理:定期清理日志,避免磁盘空间不足
- 备份恢复:定期备份数据,确保数据安全
- 版本升级:及时升级到最新版本,获得新特性和 bug 修复
- 监控告警:设置合理的监控告警,及时发现和处理问题
- 容量规划:根据业务增长,提前规划存储和计算资源
- 故障演练:定期进行故障演练,提高应对故障的能力
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
