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

tidb教程FG006-TiDB三节点集群部署全流程

本文档详细介绍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、内存和存储资源
  • 网络优化:确保节点间网络通信顺畅
  • 安全配置:设置合理的安全参数
风哥提示:三节点集群虽然部署简单,但仍需注意资源分配和性能调优,确保系统稳定运行。学习交流加群风哥微信: itpux-com

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

生产环境建议:三节点集群虽然适合小型环境,但仍需保证硬件配置满足业务需求,特别是存储和网络。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 拓扑设计

3.1.1 拓扑文件设计

# 拓扑文件设计学习交流加群风哥QQ113257174

## 三节点集群拓扑
$ 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

## 下载并安装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

风哥提示:配置修改后,需要重新加载组件才能使配置生效。更多学习教程公众号风哥教程itpux_com

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语句
– 调整配置参数
– 检查硬件资源
– 检查网络延迟

生产环境建议:在部署和运行过程中,遇到问题时要及时查看日志,定位问题原因,并采取相应的解决措施。from tidb视频:www.itpux.com

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 修复
  • 监控告警:设置合理的监控告警,及时发现和处理问题
  • 容量规划:根据业务增长,提前规划存储和计算资源
  • 故障演练:定期进行故障演练,提高应对故障的能力
风哥提示:三节点集群虽然部署简单,但维护工作同样重要,需要定期检查和优化,确保系统稳定运行。

持续学习:TiDB技术在不断演进,建议定期关注官方文档和社区动态,学习新的部署和维护技巧。

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

联系我们

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

微信号:itpux-com

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