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

tidb教程FG007-TiDB多节点集群扩容实战

本文档详细介绍TiDB多节点集群的扩容实战,包括扩容前准备、扩容操作、验证测试等内容。风哥教程参考TiDB官方文档扩容相关内容,适合DBA和系统管理员在业务增长时使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 扩容概念

TiDB集群扩容是指在现有集群基础上添加新的节点,以提高系统的处理能力和存储容量。

  • 目的:提高系统性能、增加存储容量、增强高可用性
  • 方式:水平扩容(添加节点)、垂直扩容(升级硬件)
  • 范围:TiDB节点、TiKV节点、PD节点、TiFlash节点
扩容的优势:

  • 提高系统处理能力
  • 增加存储容量
  • 增强系统高可用性
  • 负载均衡
  • 支持业务增长

1.2 扩容类型

TiDB集群扩容的类型:

  • TiDB节点扩容:增加SQL处理能力,适合高并发场景
  • TiKV节点扩容:增加存储容量和数据处理能力
  • PD节点扩容:增强调度能力,提高高可用性
  • TiFlash节点扩容:增加分析处理能力

1.3 扩容原则

TiDB集群扩容的基本原则:

  • 规划先行:提前规划扩容方案和资源需求
  • 分步实施:分步骤进行扩容,避免一次性大规模变更
  • 验证测试:扩容后进行充分的验证和测试
  • 监控跟踪:扩容过程中密切监控系统状态
  • 回滚计划:制定完善的回滚计划,应对异常情况
风哥提示:扩容前需要充分评估业务需求和系统状态,选择合适的扩容策略和时机。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 扩容规划

2.1.1 扩容评估

# 扩容评估

## 1. 系统状态评估
$ tiup cluster display fgedu-tidb-cluster风哥提示:

## 2. 性能评估
$ tiup cluster dashboard fgedu-tidb-cluster

## 3. 容量评估
$ tiup cluster display fgedu-tidb-cluster –status

## 4. 业务需求评估
– 并发量增长
– 数据量增长
– 响应时间要求
– 高可用性要求

## 5. 扩容方案制定
– 确定扩容类型(TiDB/TiKV/PD/TiFlash)
– 确定扩容数量
– 确定节点配置
– 确定扩容时间窗口

2.1.2 扩容方案

# 扩容方案示例

## 场景1:TiDB节点扩容
– 原因:并发查询量增加
– 方案:增加2个TiDB节点
– 配置:16核32GB内存

## 场景2:TiKV节点扩容
– 原因:数据量增长
– 方案:增加3个TiKV节点
– 配置:16核32GB内存,2TB NVMe SSD

## 场景3:混合扩容
– 原因:并发和数据量都增长
– 方案:增加2个TiDB节点和3个TiKV节点
– 配置:TiDB 16核32GB,TiKV 16核32GB 2TB NVMe SSD

2.2 资源准备

2.2.1 硬件准备

# 硬件准备

## 新节点硬件配置

### TiDB节点
– CPU:8-16核
– 内存:32-64GB
– 存储:500GB SSD
– 网络:万兆网卡

### TiKV节点
– CPU:8-16核
– 内存:32-64GB
– 存储:1-4TB NVMe SSD
– 网络:万兆网卡

### PD节点
– CPU:4-8核
– 内存:8-16GB
– 存储:200GB SSD
– 网络:万兆网卡

### TiFlash节点
– CPU:16-32核
– 内存:64-128GB
– 存储:2-4TB NVMe SSD
– 网络:万兆网卡

2.2.2 系统准备

# 系统准备

## 新节点系统配置
$ for host in new-tidb-01 new-tidb-02 new-tikv-01 new-tikv-02 new-tikv-03; do
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.3 网络准备

2.3.1 网络配置

# 网络配置

## 1. 主机名解析学习交流加群风哥QQ113257174
$ cat >> /etc/hosts << EOF 192.168.1.201 new-tidb-01 192.168.1.202 new-tidb-02 192.168.1.203 new-tikv-01 192.168.1.204 new-tikv-02 192.168.1.205 new-tikv-03 EOF ## 2. SSH免密登录 $ ssh-keygen -t rsa -N "" $ for host in new-tidb-01 new-tidb-02 new-tikv-01 new-tikv-02 new-tikv-03; do ssh-copy-id $host done ## 3. 端口开放 $ for host in new-tidb-01 new-tidb-02; do ssh $host "firewall-cmd --permanent --add-port=4000/tcp" ssh $host "firewall-cmd --permanent --add-port=10080/tcp" ssh $host "firewall-cmd --reload" done $ for host in new-tikv-01 new-tikv-02 new-tikv-03; do 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 TiDB节点扩容

3.1.1 准备扩容文件

# TiDB节点扩容

## 1. 创建扩容文件
$ cat > scale-out-tidb.yaml << EOF tidb_servers: - host: 192.168.1.201 ssh_port: 22 port: 4000 status_port: 10080 - host: 192.168.1.202 ssh_port: 22 port: 4000 status_port: 10080 EOF ## 2. 执行扩容 $ tiup cluster scale-out fgedu-tidb-cluster scale-out-tidb.yaml ## 3. 查看扩容状态 $ tiup cluster display fgedu-tidb-cluster ## 4. 验证TiDB节点 $ mysql -h 192.168.1.201 -P 4000 -u root -e "SELECT version();" $ mysql -h 192.168.1.202 -P 4000 -u root -e "SELECT version();"

3.2 TiKV节点扩容

3.2.1 准备扩容文件

# TiKV节点扩容

## 1. 创建扩容文件
$ cat > scale-out-tikv.yaml << EOF tikv_servers: - host: 192.168.1.203 ssh_port: 22 port: 20160 status_port: 20180 - host: 192.168.1.204 ssh_port: 22 port: 20160 status_port: 20180 - host: 192.168.1.205 ssh_port: 22 port: 20160 status_port: 20180 EOF ## 2. 执行扩容 $ tiup cluster scale-out fgedu-tidb-cluster scale-out-tikv.yaml ## 3. 查看扩容状态 $ tiup cluster display fgedu-tidb-cluster ## 4. 监控数据迁移 $ tiup cluster dashboard fgedu-tidb-cluster # 查看PD -> 调度 -> .region balance

3.3 PD节点扩容

3.3.1 准备扩容文件

# PD节点扩容

## 1. 创建扩容文件
$ cat > scale-out-pd.yaml << EOF pd_servers: - host: 192.168.1.206 ssh_port: 22 port: 2379 client_port: 2379 peer_port: 2380 - host: 192.168.1.207 ssh_port: 22 port: 2379 client_port: 2379 peer_port: 2380 EOF ## 2. 执行扩容 $ tiup cluster scale-out fgedu-tidb-cluster scale-out-pd.yaml ## 3. 查看扩容状态 $ tiup cluster display fgedu-tidb-cluster ## 4. 验证PD集群 $ tiup cluster exec fgedu-tidb-cluster -R pd --command "pd-ctl -u http://127.0.0.1:2379 cluster"

风哥提示:扩容PD节点时,建议保持奇数个节点,以确保集群能够正常选举leader。更多学习教程公众号风哥教程itpux_com

Part04-生产案例与实战讲解

4.1 扩容实战案例

4.1.1 电商平台TiKV节点扩容

# 电商平台TiKV节点扩容案例

## 背景
– 现有集群:3个TiDB节点,3个TiKV节点,3个PD节点
– 问题:数据量增长迅速,TiKV节点磁盘使用率超过80%
– 解决方案:增加3个TiKV节点

## 实施步骤

### 1. 新节点准备
$ for host in tikv-04 tikv-05 tikv-06; do
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.204 tikv-04 192.168.1.205 tikv-05 192.168.1.206 tikv-06 EOF ### 3. SSH免密登录 $ ssh-keygen -t rsa -N "" $ for host in tikv-04 tikv-05 tikv-06; do ssh-copy-id $host done ### 4. 创建扩容文件 $ cat > scale-out-tikv.yaml << EOF tikv_servers: - host: 192.168.1.204 - host: 192.168.1.205 - host: 192.168.1.206 EOF ### 5. 执行扩容 $ tiup cluster scale-out fgedu-tidb-cluster scale-out-tikv.yaml ### 6. 监控扩容过程 $ tiup cluster dashboard fgedu-tidb-cluster # 查看数据迁移进度 ### 7. 验证扩容结果 $ tiup cluster display fgedu-tidb-cluster $ tiup cluster exec fgedu-tidb-cluster -R tikv --command "df -h"

4.2 验证案例

4.2.1 扩容后验证

# 扩容后验证

## 1. 集群状态验证
$ tiup cluster display fgedu-tidb-cluster

## 2. 服务状态验证
$ tiup cluster health fgedu-tidb-cluster

## 3. 功能验证
$ mysql -h 192.168.1.201 -P 4000 -u root << EOF CREATE DATABASE fgedu_test; USE fgedu_test; CREATE TABLE fgedu_users (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO fgedu_users VALUES (1, 'test1'), (2, 'test2'), (3, 'test3'); SELECT * FROM fgedu_users; EOF ## 4. 性能验证 $ tiup bench tpcc --db fgedu_test --host 192.168.1.201 --port 4000 --user root --warehouses 10 --time 60s ## 5. 负载均衡验证 $ tiup cluster exec fgedu-tidb-cluster -R tidb --command "curl -s http://localhost:10080/status | grep connections" ## 6. 数据分布验证 $ tiup cluster exec fgedu-tidb-cluster -R pd --command "pd-ctl -u http://127.0.0.1:2379 store"

4.3 故障排除

4.3.1 扩容失败

# 扩容失败问题

## 问题1:SSH连接失败
– 现象:扩容过程中SSH连接失败
– 解决方案:
– 检查网络连接
– 检查SSH免密登录配置
– 检查防火墙设置

## 问题2:端口冲突
– 现象:新节点端口被占用
– 解决方案:
– 检查端口占用情况
– 修改配置文件中的端口
– 重启相关服务

## 问题3:数据迁移失败
– 现象:TiKV节点扩容后数据迁移失败
– 解决方案:
– 查看TiKV日志
– 检查网络连接
– 检查磁盘空间
– 调整PD调度参数

## 问题4:服务启动失败
– 现象:新节点服务无法启动
– 解决方案:
– 查看服务日志
– 检查配置文件
– 检查资源使用情况
– 检查权限设置

生产环境建议:扩容过程中要密切监控系统状态,遇到问题及时处理,确保扩容过程顺利完成。from tidb视频:www.itpux.com

Part05-风哥经验总结与分享

5.1 最佳实践

TiDB多节点集群扩容最佳实践:

  • 提前规划:根据业务增长趋势,提前规划扩容方案
  • 资源准备:确保新节点的硬件和网络资源满足要求
  • 分步实施:分步骤进行扩容,避免一次性大规模变更
  • 监控跟踪:扩容过程中密切监控系统状态
  • 验证测试:扩容后进行充分的验证和测试
  • 文档记录:详细记录扩容过程和结果
  • 回滚计划:制定完善的回滚计划,应对异常情况

5.2 性能优化

# 扩容后的性能优化

## 1. 调度优化
$ tiup cluster exec fgedu-tidb-cluster -R pd –command “pd-ctl -u http://127.0.0.1:2379 config set schedule.max-snapshot-count 6”
$ tiup cluster exec fgedu-tidb-cluster -R pd –command “pd-ctl -u http://127.0.0.1:2379 config set schedule.max-pending-peer-count 32”

## 2. 负载均衡
$ tiup cluster exec fgedu-tidb-cluster -R pd –command “pd-ctl -u http://127.0.0.1:2379 operator add balance-region”

## 3. 配置调整
$ tiup cluster edit-config fgedu-tidb-cluster
# 调整TiKV配置
server_configs:
tikv:
performance.max-procs: 16
storage.scheduler-worker-pool-size: 4

## 4. 应用优化
– 优化应用连接池
– 合理使用读写分离
– 优化SQL语句
– 增加缓存层

5.3 维护技巧

TiDB多节点集群扩容后的维护技巧:

  • 定期检查:定期检查新节点的状态和性能
  • 监控告警:设置合理的监控告警,及时发现问题
  • 数据均衡:确保数据在所有节点上均匀分布
  • 备份策略:调整备份策略,确保数据安全
  • 容量规划:根据业务增长,继续规划未来的扩容需求
  • 版本管理:确保新节点的版本与现有节点一致
  • 文档更新:及时更新集群文档,记录新节点信息
风哥提示:扩容是一个持续的过程,需要根据业务发展和系统状态不断调整和优化,确保集群始终处于最佳状态。

持续学习:TiDB的扩容技术在不断演进,建议定期关注官方文档和社区动态,学习新的扩容策略和最佳实践。

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

联系我们

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

微信号:itpux-com

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