适用对象: 有 SQL Server / MySQL 基础的 DBA
目标: 4 周内掌握 TiDB 8.5 核心概念、部署运维、故障排查与生产最佳实践
文档日期: 2026-07-05
目录
- TiDB 8.5 新特性速览
- 第 1 周:环境搭建与基础体验
- 第 2 周:DBA 核心运维操作
- 第 3 周:SQL 调优与故障排查
- 第 4 周:进阶与生产要点
- 学习资源汇总
- 附录:TiDB vs MySQL vs SQL Server 对照表
1. TiDB 8.5 新特性速览
TiDB 8.5 LTS 于 2024-12-27 正式发布,是 平凯星辰 最新的长期支持版本。当前推荐使用最新小版本(如 v8.5.6)。
| 特性 | 说明 | DBA 视角的意义 |
|---|---|---|
| TiKV MVCC 内存引擎 (IME) | 将最新写入的 MVCC 版本数据缓存到内存, 跳过旧版本直接检索最新数据 | 写入密集型场景读性能大幅提升 |
| 向量搜索 | 原生支持 AI 向量检索,SQL 语法兼容 MySQL 风格 | 按需学习,不需作为入门重点 |
| 单集群支持 100 万+ 张表 | 分区表全局索引 GA(正式可用) | SaaS 多租户场景更友好 |
| 批量建表性能提升 20 倍+ | TiProxy 增强(查询路由、连接处理优化) | 大规模数据初始化快了 |
| 并行处理 | 查询执行和数据加载并行化显著提升 | 大数据量分析场景优化 |
| 多租户与资源管理增强 | 资源组(Resource Group)能力强化 | 多业务共用一个集群更安全 |
2. 第 1 周:环境搭建与基础体验
2.1 安装 TiUP(包管理器)
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
# 刷新环境变量
source ~/.bashrc
2.2 一键启动本地测试集群
# 直接启动(默认最新版)
tiup playground
# 指定版本和实例数(推荐 4C+10G 内存)
tiup playground v8.5.6 --db 2 --pd 3 --kv 3
启动后自动拉起完整的分布式组件:
| 组件 | 角色 | 访问方式 |
|---|---|---|
| TiDB | SQL 计算层 | mysql -h 127.0.0.1 -P 4000 -u root |
| PD | 调度中心 | http://127.0.0.1:2379/dashboard |
| TiKV | 行式存储 | 无需直连 |
| TiFlash (可选) | 列式存储 | 分析查询加速 |
| Grafana | 监控面板 | http://127.0.0.1:3000 |
2.3 基础 SQL 体验
-- 创建数据库(和 MySQL 一样)
CREATE DATABASE test_db;
USE test_db;
-- 建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(200)
);
-- 插入数据
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
-- 查看表对应的 Region 分布(TiDB 独有)
SHOW TABLE REGIONS;
2.4 本周任务清单
- 安装 TiUP,走通
tiup playground - 用 MySQL 客户端连接 TiDB
- 建库建表,体验基础 DML 操作
- 查看 TiDB Dashboard 基本页面
- 查看 Grafana 监控面板
- 执行
SHOW TABLE REGIONS理解数据分片概念
3. 第 2 周:DBA 核心运维操作
3.1 生产级集群部署
# 编写拓扑文件 topology.yaml
tiup cluster deploy tidb-cluster v8.5.6 ./topology.yaml
# 启动集群
tiup cluster start tidb-cluster
# 查看集群状态
tiup cluster display tidb-cluster
# 停止集群
tiup cluster stop tidb-cluster
# 删除集群
tiup cluster destroy tidb-cluster
3.2 扩缩容
# 扩容(编写 scale-out.yaml 加入新节点)
tiup cluster scale-out tidb-cluster scale-out.yaml
# 缩容
tiup cluster scale-in tidb-cluster --node 10.0.1.4:20160
⚠️ 扩容后 PD 不调度 Region 的四大根因(上次聊过):
- Store 打分已均衡,无需调度
- 调度器被关闭(
balance-region/balance-leader被禁用)- Store label 与 Placement Rules 约束不匹配
- 存储空间不足触发调度保护
3.3 配置管理
# 查看配置
tiup cluster edit-config tidb-cluster
# 热加载(无需重启)
tiup cluster reload tidb-cluster
# 升级
tiup cluster upgrade tidb-cluster v8.5.6
3.4 备份恢复(DBA 保命技能)
全量备份与恢复:
# 全量备份
tiup br backup full --pd "10.0.1.1:2379" --storage "local:///data/backup"
# 全量恢复
tiup br restore full --pd "10.0.1.1:2379" --storage "local:///data/backup"
增量 / PITR(时间点恢复):
# 启动日志备份
tiup br log start --pd "10.0.1.1:2379" \
--storage "local:///data/backup/log"
# PITR 恢复到指定时间点
tiup br restore point --pd "10.0.1.1:2379" \
--storage "local:///data/backup" \
--restore-ts "2026-07-05 15:00:00"
3.5 监控体系
| 组件 | 地址 | 用途 |
|---|---|---|
| TiDB Dashboard | http://{PD}:2379/dashboard |
SQL 分析、慢查询、集群诊断、流量可视化 |
| Grafana | http://{Grafana}:3000 |
性能指标、资源监控、告警 |
| Prometheus | http://{Prometheus}:9090 |
指标存储与查询 |
3.6 本周任务清单
- 编写 topology.yaml 部署一个完整集群
- 练习
tiup cluster start/stop/display - 写一个 BR 全量备份脚本
- 模拟误删数据后用 PITR 恢复
- 在 Grafana 上看一次 TiDB/TiKV/PD 监控大盘
- 做一次扩容实验,观察 Region 调度
4. 第 3 周:SQL 调优与故障排查
4.1 EXPLAIN ANALYZE
-- 和 MySQL EXPLAIN 类似但更详细
EXPLAIN ANALYZE SELECT u.name, COUNT(o.id)
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2026-01-01'
GROUP BY u.name;
输出解读关键点:
estRowsvsactRows:估算行 vs 实际行,差异大说明统计信息不准time:各算子耗时IndexLookup:先读索引再回表TableFullScan:没走索引,全表扫描
4.2 慢查询定位
-- 查询 INFORMATION_SCHEMA 中的慢查询表
SELECT * FROM INFORMATION_SCHEMA.SLOW_QUERY
WHERE time > '2026-07-05 00:00:00'
ORDER BY query_time DESC
LIMIT 10;
-- 查询最近 10 条慢查询(简化版)
SELECT * FROM INFORMATION_SCHEMA.SLOW_QUERY
ORDER BY time DESC LIMIT 10;
4.3 统计信息管理
-- 手动收集统计信息
ANALYZE TABLE orders;
-- 查看统计信息
SHOW STATS_META WHERE table_name = 'orders';
-- 自动收集间隔配置(默认 30min 内有更新的表自动收集)
-- 由 tidb_auto_analyze_ratio 和 tidb_auto_analyze_start_time 控制
4.4 常见故障排查
热点问题
-- 查看热点 Region
SHOW TABLE REGIONS;
-- Dashboard → Key Visualizer 可视化查看读写热点
解决方案:
- 打散自增主键(使用
AUTO_RANDOM代替AUTO_INCREMENT) - 使用分区表
- 手动 Split Region
Region 不均衡
# 查看 Store 状态
tiup ctl pd store
# 手动触发调度
tiup ctl pd scheduler add balance-region-scheduler
慢写入
- 检查是否存在热点写入
- 检查 TiKV 磁盘 IO 是否打满
- 检查 Region 是否有大量积压的 Raft log
4.5 本周任务清单
- 练习 EXPLAIN ANALYZE 阅读执行计划
- 用 SLOW_QUERY 表定位一条慢查询
- 手动收集一次统计信息
- 读一次 TiDB Dashboard 的 SQL 诊断报告
- 在 Dashboard 上看 Key Visualizer
- 模拟一个热点表,用
AUTO_RANDOM修复
5. 第 4 周:进阶与生产要点
5.1 TiFlash + HTAP
TiFlash 是列式存储引擎,与 TiKV 实时同步数据,专为分析查询优化。
# 部署时添加 TiFlash 节点
tiup playground v8.5.6 --tiflash 1
-- 为表创建 TiFlash 副本
ALTER TABLE orders SET TIFLASH REPLICA 1;
-- 查看副本进度
SELECT * FROM INFORMATION_SCHEMA.TIFLASH_REPLICA;
查询自动路由: TiDB 优化器自动选择 TiFlash(列存)或 TiKV(行存),无需改 SQL。
5.2 Placement Rules(数据调度规则)
-- 查看默认规则
SHOW PLACEMENT;
-- 为分区表设置冷热分离
CREATE TABLE logs (
id INT,
created_at DATE
) PARTITION BY RANGE (YEAR(created_at)) (
PARTITION p_hot VALUES LESS THAN (2025) PLACEMENT POLICY='hot',
PARTITION p_cold VALUES LESS THAN (2030) PLACEMENT POLICY='cold'
);
5.3 TiCDC(实时数据同步)
# 创建同步任务:TiDB → Kafka
tiup cdc cli changefeed create \
--pd=http://10.0.1.1:2379 \
--sink-uri="kafka://10.0.1.2:9092/topic-name" \
--changefeed-id="tidb-to-kafka"
5.4 多租户资源管控(8.5 增强)
-- 创建资源组
CREATE RESOURCE GROUP 'oltp_heavy'
RU_PER_SEC = 5000
PRIORITY = HIGH;
-- 绑定用户到资源组
ALTER USER 'app_user' RESOURCE GROUP 'oltp_heavy';
-- 绑定数据库到资源组
ALTER DATABASE test_db RESOURCE GROUP 'oltp_light';
5.5 生产环境最佳实践清单
- 部署架构:至少 3 节点 PD,3 节点 TiKV,2 节点 TiDB
- TiKV 配置:使用 NVMe SSD,单机部署 1-2 个 TiKV 实例
- 监控告警:Grafana + AlertManager 配置核心告警
- 备份策略:全量(每日)+ 日志备份(PITR),定期做恢复演练
- 版本升级:跨 LTS 版本升级测试,先在测试环境验证
- 参数调优:
tidb_mem_quota_query、tidb_distsql_scan_concurrency等
6. 学习资源汇总
| 资源 | 链接 | 说明 |
|---|---|---|
| 官方文档 | docs.pingcap.com/zh/tidb/stable | 权威一手资料 |
| 官方快速上手指南 | Quick Start | 15 分钟视频 + 实操 |
| TiDB 社区 | tidb.net | 实战文章、用户案例 |
| AskTUG 论坛 | asktug.com | 提问、搜问题、参与讨论 |
| TiDB 官网博客 | pingcap.com/blog | 版本发布、技术深度解析 |
| GitHub | github.com/pingcap/tidb | 源码、Issue、Release Notes |
推荐的社区学习路径
- 第一周: 官方文档 → Quick Start →
tiup playground - 第二周: 官方文档 → 部署运维 → 备份恢复
- 第三周: 官方文档 → SQL 优化 → Dashboard 使用
- 第四周: TiDB 社区 → AskTUG 搜实际案例
7. 附录:TiDB vs MySQL vs SQL Server 对照表
架构对比
| 维度 | TiDB | MySQL | SQL Server |
|---|---|---|---|
| 架构 | 分布式(计算存储分离) | 单机主从 | 单机/Always On |
| 扩展性 | 水平扩展(加节点) | 垂直扩展为主 | 垂直/只读副本 |
| 高可用 | Raft 共识(自动故障转移) | 主从复制(手动/半自动) | Always On AG |
| 一致性 | 强一致(Raft) | 最终一致(异步复制) | 强一致(同步提交) |
DBA 操作对比
| 操作 | TiDB | MySQL | SQL Server |
|---|---|---|---|
| 部署工具 | tiup |
手动/包管理器 | 安装向导 |
| 备份 | br(物理备份) |
mysqldump / XtraBackup |
BACKUP DATABASE |
| 慢查询 | INFORMATION_SCHEMA.SLOW_QUERY |
slow_query_log / pt-query-digest |
sys.dm_exec_query_stats |
| 集群状态 | tiup cluster display |
SHOW SLAVE STATUS |
sys.dm_hadr_availability_group_states |
| 监控 | Grafana + Prometheus | PMM / Zabbix | SSMS / DMV |
| 日志 | 组件日志 + Dashboard | error.log / binlog |
ERRORLOG / DBCC LOG |
一句话总结: 按"搭环境 → 做运维 → 查问题 → 调优"的顺序走一遍,4 周从 TiDB 新手变实战选手。 你有 SQL Server 和 MySQL 双基础,80% 的概念是通用的,只需补齐 Raft 共识、Region 分片、PD 调度三个核心新概念。