如何在 CentOS 8 上使用 TiDB 集群 搭建 HTAP(混合事务与分析处理)数据库解决方案
TiDB 结合行存储与列存储能力,通过TiKV 行存(OLTP)TiFlash 列存(OLAP)PD 调度TiDB SQL 层的架构,实现实时 OLTP 与低延迟 OLAP 混合处理;TiDB SQL 层在执行计划中智能选择访问行式或列式存储,从而实现真正的 HTAP 能力。HTAP 运行原理简要图示(逻辑层)组件作用SQL 解析/优化/执行,兼容 MySQL 协议全局调度与元数据管理TiKVro
本文呈现一套基于 CentOS 8 的 TiDB HTAP 生产级部署方案。A5数据本文涵盖 硬件配置建议、系统要求、集群拓扑设计、部署配置、关键部件参数、HTAP 特性启用方法、监控与性能基准对比 等技术细节,并通过代码与表格给出可复制的实践路径,适合真实生产环境参考。
说明:TiDB 是由 PingCAP 开发的开源分布式 NewSQL 数据库,原生支持 HTAP(Hybrid Transactional/Analytical Processing)混合负载;具备水平可扩展、高可用以及与 MySQL 协议兼容的特点,是构建 OLTP + OLAP 合一平台的优秀选择。
一、核心价值与架构简介
TiDB 结合行存储与列存储能力,通过 TiKV 行存(OLTP) + TiFlash 列存(OLAP) + PD 调度 + TiDB SQL 层 的架构,实现实时 OLTP 与低延迟 OLAP 混合处理;TiDB SQL 层在执行计划中智能选择访问行式或列式存储,从而实现真正的 HTAP 能力。
HTAP 运行原理简要图示(逻辑层)
| 组件 | 作用 |
|---|---|
| TiDB Server | SQL 解析/优化/执行,兼容 MySQL 协议 |
| PD (Placement Driver) | 全局调度与元数据管理 |
| TiKV | row-store 支持事务与 OLTP |
| TiFlash | col-store 支持分析型查询 |
| Monitor | Prometheus/Grafana 监控 |
二、系统与香港服务器www.a5idc.com硬件环境建议(生产级)
2.1 软件系统建议
| 项 | 版本/说明 |
|---|---|
| 操作系统 | CentOS 8 (x86_64), 已打补丁更新 |
| 内核参数优化 | 禁用 swap、调整文件句柄、网络参数 |
| 防火墙 | 生产建议开启并精确放行所需端口 |
| SSH | 节点间免密登录配置 |
注意:官方文档支持在 CentOS 7.3 及更高版本上部署 TiDB 集群;CentOS 8 在社区测试中也可正常运行。
2.2 推荐硬件配置(中等负载生产)
| 角色 | CPU | 内存 | 存储 | 网络 |
|---|---|---|---|---|
| PD 节点(x3) | 4–8 核 | 32–64G | 500G SSD | 万兆 |
| TiKV 节点(x3) | 16–32 核 | 128–256G | NVMe SSD * 3 RAID | 万兆 |
| TiDB 节点(x2) | 8–16 核 | 64–128G | 500G SSD | 万兆 |
| TiFlash 节点(x3) | 16–32 核 | 128–256G | NVMe SSD * 3 RAID | 万兆 |
| Monitor/Alert | 4 核 | 16–32G | 200G SSD | 千兆 |
说明:TiFlash 节点数量需合理规划,与 TiKV 保持副本数可调,确保 HTAP 查询性能与可用性。
三、环境准备与部署流程
3.1 系统初始化与优化
登录各节点,执行系统更新:
sudo dnf -y update && sudo reboot
禁用 swap(建议):
sudo swapoff -a
echo "vm.swappiness = 0" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
调整文件句柄与网络参数:
cat >> /etc/sysctl.conf <<EOF
fs.file-max = 1000000
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
EOF
sudo sysctl -p
3.2 安装 TiUP 管理工具
选择一台运维控制机(可为任意 Linux):
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
source ~/.bash_profile
tiup update --self
tiup update cluster
确认安装:
tiup --version
tiup cluster --version
3.3 构建集群拓扑配置
在控制机准备 topology.yaml:
global:
user: "tidb"
ssh_port: 22
pd_servers:
- host: 192.168.1.10
client_port: 2379
peer_port: 2380
- host: 192.168.1.11
- host: 192.168.1.12
tikv_servers:
- host: 192.168.1.20
- host: 192.168.1.21
- host: 192.168.1.22
tidb_servers:
- host: 192.168.1.30
- host: 192.168.1.31
tiflash_servers:
- host: 192.168.1.40
- host: 192.168.1.41
- host: 192.168.1.42
monitoring_servers:
- host: 192.168.1.50
注意:IP 需换成实际集群环境。
3.4 部署集群
执行部署:
tiup cluster deploy prod-tidb v8.5.5 ./topology.yaml --user root -p
按提示确认 IP 与端口无冲突。
启动集群:
tiup cluster start prod-tidb
tiup cluster display prod-tidb
验证 SQL 访问:
mysql -h 192.168.1.30 -P 4000 -u root
四、启用 HTAP 能力与测试方法
4.1 在 TiDB 上启用列存副本
默认 TiDB 不会把所有表都在 TiFlash 上有副本,你需要对分析型表设置 TiFlash 副本:
ALTER TABLE orders SET TIFLASH REPLICA 2;
ALTER TABLE lineitem SET TIFLASH REPLICA 2;
TiFlash 会自动创建列式数据,并同步 TiKV 的数据变化。
4.2 基准测试数据准备
借助标准 TPC‑H 数据集:
# 使用 tidb-bench 或 dbgen 工具生成 TPC‑H 数据
dbgen -s 10 # scale=10
导入到 TiDB:
USE tpch;
SOURCE customers.sql;
SOURCE orders.sql;
4.3 OLTP vs HTAP 查询性能对比
| 测试项 | 行存 TiKV 查询 | 列存 TiFlash 查询 |
|---|---|---|
| 简单 SELECT count(*) | 120 ms | 110 ms |
| GROUP BY 多字段 | 350 ms | 85 ms |
| 大表 JOIN | 1020 ms | 245 ms |
以上结果仅为示例性数据,实际性能会受硬件规格、TiFlash 副本数、网络等影响。
五、监控与运维建议
5.1 集群监控
部署集群时默认包含 Prometheus + Grafana 监控:
- Grafana 面板地址:
http://192.168.1.50:3000 - 监测指标:TiKV 延迟/IO、TiFlash 列存扫描速率、PD 调度延迟、SQL QPS 等。
5.2 常用运维命令
重启单个组件:
tiup cluster restart prod-tidb -R tidb
扩容 TiKV 节点:
- 修改 topology.yaml 添加新节点;
- 执行:
tiup cluster scale-out prod-tidb ./topology.yaml
六、常见问题与优化策略
6.1 CentOS 8 特殊注意点
CentOS 8 自 2021 以后进入生命周期阶段,社区维护建议过渡到兼容 RHEL8 的 Rocky/AlmaLinux,但从实践来看 CentOS 8 仍能稳定运行 TiDB 8.x 系列。为了避免未来系统不再更新,建议考虑使用 Rocky Linux 8 或 AlmaLinux 8。在社区中已有基于 Rocky Linux 8 的 TiDB 部署实践。
6.2 数据密集型查询优化
- 调整 TiFlash 副本数;
- 细化统计信息,执行
ANALYZE TABLE; - 利用
EXPLAIN检查执行计划,确保列存优先。
七、总结
本文从 CentOS 8 环境准备、真实生产级硬件需求、TiUP 一键部署、HTAP 功能启用、监测与性能对比 多维度,给出一套完整的 TiDB HTAP 解决方案。通过在同一集群上同时支持 OLTP 和 OLAP 工作负载,可显著简化传统的在线数据架构,从而在保证事务性处理的同时,提供低延迟分析查询能力。
如果你需要进一步集成 Spark、实时数据同步(CDC)或 Kubernetes 原生部署(TiDB Operator),也可以在当前基础上扩展;这将构成一个更加完善的实时数据平台。
更多推荐
所有评论(0)