Module 01 TiDB Cluster 部署与运维
本文档是 关于TiDB 运维体系内容,聚焦TiDB 集群从部署、日常连接、参数配置、权限安全、监控告警、扩容升级全生命周期运维,下面分 6 大课时逐层拆解。
一、模块整体定位
核心目标:掌握 TiUP 全工具链,独立完成 TiDB 集群搭建、日常运维、故障观测、版本迭代,所有操作均基于 TiDB 官方运维工具 TiUP,适配生产环境标准流程。
二、Lesson01:TiDB Cluster 集群部署(集群搭建核心)
1. 学习目标
- 理解 TiUP 运维工具定位与全部能力;
- 完整掌握 TiUP 部署 TiDB 集群标准化流程;
- 熟记集群组件启停顺序、操作命令;
- 理清 TiDB 部署目录、数据目录、日志目录结构。
2. 核心工具:TiUP
TiUP 是 TiDB 4.0 + 官方标配集群运维工具,统一接管集群部署、启动、销毁、弹性扩缩容、版本升级、参数修改全流程。
关键操作命令
- 安装 TiUP:通过 curl 拉取官方脚本一键安装;
- 集群前置校验:
tiup cluster check(硬件、系统、SSH 互信校验); - 部署集群:
tiup cluster deploy,依赖拓扑文件topology.yaml定义各组件节点、资源; - 集群状态查看:
tiup cluster list(本地集群清单)、tiup cluster display(集群详细节点、版本、运行状态); - 集群启停:
tiup cluster start/stop。
3. 硬件 & 操作系统前置要求(生产最低标准)
(1)各组件最低硬件规格
表格
| 组件 | CPU | 内存 | 硬盘 | 网络 | 最少实例数 |
|---|---|---|---|---|---|
| TiDB | 16 核 | 48GB+ | SAS | 万兆网卡(2 块最优) | 2 |
| PD | 8 核 | 16GB+ | SSD | 万兆网卡(2 块最优) | 3 |
| TiKV | 16 核 | 64GB+ | SSD | 万兆网卡(2 块最优) | 3 |
| TiFlash | 48 核 | 128GB+ | 多块 SSD | 万兆网卡(2 块最优) | 2 |
| TiCDC | 16 核 | 64GB+ | SSD | 万兆网卡 | 2 |
| 监控组件 | 8 核 | 16GB+ | SAS | 千兆网卡 | 1 |
(2)系统硬性要求
-
操作系统:RHEL/CentOS7.3+、Oracle EL7.3、Amazon Linux2、Ubuntu 16.04+;
-
软件依赖:sshpass1.06+、numactl2.0.12+、tar任意版本;
-
前置检查项(必须全部满足否则部署失败):
- 关闭 Swap、防火墙;
- 同步 NTP 时间服务;
- 系统内核、内存参数调优;
- 节点间 SSH 免密 sudo 互通;
- 安装 numactl 绑定 CPU 资源。
4. 集群启停规范(生产严格遵守)
-
启动顺序:PD → TiKV → TiFlash → TiDB
- PD 是元数据调度中心,必须最先启动,TiDB 依赖 PD 获取路由元数据最后启动;
- 首次启动初始化密码:
tiup cluster start xxx --init
-
停止顺序:TiDB → TiFlash → TiKV → PD(和启动完全反向)
- 先切断业务接入层,再关闭存储,最后销毁元数据服务,顺序错误会出现 Region 异常、元数据丢失;
- 命令:
tiup cluster stop xxx
5. 目录结构定义
deploy_dir部署目录:存放二进制、配置文件、启停脚本,默认~/tidb-deploy;data_dir数据目录:TiKV/TiFlash 等组件数据存储位置,默认~/tidb-data;log_dir日志目录:各组件运行日志,可在topology.yaml自定义路径;- 日志排查入口:故障排查依托Dashboard 日志检索、Grafana 指标联动定位故障。
三、Lesson 02 TiDB 的连接管理(接入层运维)
1. TiDB Server 核心连接特性
- 完全兼容 MySQL5.7 协议,业务无需大幅改造;
- 无状态计算节点:不存储任何会话数据,可无限水平扩容,前端搭配负载均衡分摊连接压力;
- 默认接入端口 4000。
2. 客户端接入类型
- 命令行:
mysql -u 用户名 -h 地址 -P 4000; - GUI 可视化:Navicat、DBeaver、phpMyAdmin;
- 开发驱动:Java/Python/Go/C/PHP 各类 MySQL Connector。
3. MySQL5.7 协议兼容限制
- 支持:绝大多数 DML、DDL、事务语法;
- 不支持:存储过程、触发器、自定义函数、外键约束 等。
4. 连接监控方式
Grafana 大盘查看总连接、活跃连接、空闲连接、慢会话指标。
四、Lesson03:TiDB 配置管理(参数调优基础)
1. 两大参数体系区分
(1)系统参数(SQL 参数)
-
作用对象:仅 TiDB Server;
-
修改方式:SQL 语句
SET; -
存储位置:TiDB 内置 KV 存储;
-
作用域分两类:
GLOBAL:全集群永久生效,仅新连接生效,当前会话不改变;SESSION:仅当前会话生效,断开连接失效;
-
查询:
SHOW VARIABLES/SHOW GLOBAL VARIABLES。
(2)集群组件参数(PD/TiKV/TiFlash/TiDB 进程参数)
-
作用对象:单个组件实例;
-
存储:组件本地配置文件 + 集群 KV 持久化;
-
修改两类方式:
- TiUP 离线修改:
tiup cluster edit-config,执行reload滚动重启组件生效; - 在线动态修改:
set config tikv xxx,无需重启立即生效(仅部分参数支持);
- TiUP 离线修改:
-
查询:
show config查看全集群所有实例配置。
2. 三种参数修改实操方式
- SQL 修改系统参数(TiDB 会话级 / 全局)
--兼容写法,等价标准SET GLOBAL
SET @global.tidb_distsql_scan_concurrency = 10;
SET GLOBAL tidb_distsql_scan_concurrency = 10;
--省略作用域默认等价SESSION
SET SESSION tidb_distsql_scan_concurrency = 10;
SET tidb_distsql_scan_concurrency = 10;
- TiUP 修改集群静态参数(需滚动重启)
tiup cluster edit-config 集群名
# 全集群组件重载
tiup cluster reload 集群名
# 指定节点/组件精准重载
tiup cluster reload 集群名 -N 10.0.0.1:4000 -R tidb
- 在线动态修改 TiKV/PD 参数(无需重启)
set config tikv split.qps-threshold = 1000;
五、Lesson04:用户管理与权限安全(数据库权限管控)
1. 两层安全机制
- 认证 Authentication:校验账号密码,失败直接拒绝连接;
- 授权 Authorization:校验账号是否拥有库 / 表操作权限;
- 用户存储:所有账号、角色信息持久化系统表
mysql.user。
2. 远程连接接入规范
标准连接命令:
mysql -u 用户名 -p密码 -h TiDB_Server_IP -P 4000
必填要素说明:
-h:指定 TiDB Server 节点 IP / 域名,远程访问不可省略;-P:TiDB 默认服务端口 4000,端口修改后必须显式指定;-u/-p:匹配创建账号时配置的用户名与密码,同时匹配账号绑定的访问主机规则。
3. 用户创建与连接规范
账号格式:用户名@主机标识,主机支持 IP、通配符%(不写主机默认 %),用户名大小写敏感。
-- 仅允许本机127.0.0.1登录test账号,密码1234
CREATE USER 'test'@'127.0.0.1' IDENTIFIED BY '1234';
-- 仅允许192.168.10网段主机登录test账号
CREATE USER 'test'@'192.168.10.%' IDENTIFIED BY '1234';
-- 修改密码ALTER USER 能力极强,全能账号管理
ALTER USER 'test'@'localhost' IDENTIFIED BY 'mypass';
--SET PASSWORD FOR 功能极度单一,仅支持修改账号登录密码,不支持任何账号附加属性配置,无法设置密码过期、登录策略、SSL 权限、密码策略等扩展能力
SET PASSWORD FOR 'test'@'localhost'='mypass';
root 密码丢失应急方案
拓扑配置文件[security]添加skip-grant-table = true,重启 TiDB 免密登录重置密码,修复后关闭该参数。
4. 角色(Role)权限体系
4.1. 角色定义
角色是权限集合载体,和普通用户共用底层存储表 mysql.user,结构同样为 角色名@主机标识,和用户账户体系完全打通,支持统一赋权、回收权限。
4.2. 角色默认内置特性
- 默认锁定状态:角色本身无法直接登录数据库,仅作为权限中转容器;
- 无独立登录密码:角色不用于客户端登录,无需配置密码;
- 权限生效前置条件:用户绑定角色后,登录会话必须执行
SET ROLE 角色名;激活,当前会话才会加载角色对应的全部权限,未激活则不生效。
4.3. 四层权限粒度(从粗到细)
| 粒度类型 | 写法示例 | 适用场景 |
|---|---|---|
| 全局权限 | *.* |
DBA 超级管理员全集群管控权限 |
| 数据库级权限 | test_db.* |
业务账号仅访问指定业务库 |
| 数据表级权限 | test_db.t_user |
精细化管控单张业务表操作权限 |
| 列级权限 | 针对表指定字段赋权 | 敏感字段脱敏管控(手机号、身份证等) |
4.4. 关键授权参数 WITH GRANT OPTION
- 作用:被授权账号 / 角色,拥有二次下放该权限给其他账号的能力;
- 风险管控:生产环境仅给核心运维账号开放,业务账号严禁配置该参数,避免权限泛滥泄露。
4.5.常用角色 & 权限语句
-- 1. 创建角色,支持指定主机范围;创建 2 个角色:`r_admin` 默认允许任意主机,`r_dev` 仅本机生效。
create role r_admin, r_dev@localhost;
-- 2. 给角色赋予库查询权限;给开发角色授予 test 库全表查询权限。
grant select on test.* to r_dev@localhost;
-- 3. 将角色授予业务用户,用户绑定角色权限;用户 user1 绑定管理员角色,登录激活角色后继承 r_admin 所有权限。
grant r_admin to user1@localhost;
-- 4. 查询账号完整权限清单;查看账号自身权限 + 绑定角色继承权限,用于权限审计核对。
show grants for dev1@localhost;
-- 5. 回收角色指定权限;回收开发角色增删改权限,仅保留查询能力。
revoke insert,update,delete on test.* from r_dev@localhost;
-- 6. 删除废弃角色;清理下线角色,同步解绑所有关联用户权限。
drop role r_admin;
-- 7. 全局超级权限+转授权限能力;授予全库所有权限,且允许该用户把权限授予他人,仅 DBA 管理员使用。
grant all privileges on *.* to user2@localhost with grant option;
六、Lesson05:TiDB 监控体系(故障观测、性能分析)
1. 四大核心组件职责
| 组件 | 核心定位 | 核心作用 |
|---|---|---|
| Prometheus | 指标采集 & 时序存储核心 | 定时拉取 TiDB/PD/TiKV 各组件 metrics 接口指标,持久化时序监控数据, 是整套监控数据源底座 |
| Grafana | 可视化大盘展示载体 | 内置 TiDB 全套预制面板,覆盖集群、组件、主机、SQL、 存储调度等维度指标可视化查看、趋势复盘 |
| TiDB Dashboard | PD 内置原生诊断工具 | 内嵌在 PD 服务中,轻量化集群运维诊断界面, 无需额外部署组件,面向日常问题快速定位 |
| Alertmanager | 告警收敛推送模块 | 对接 Prometheus 告警规则,对异常指标分级降噪、 分组推送告警(邮件、钉钉、企业微信等),实现故障主动发现 |
2. 官方固定访问入口
- Grafana:
http://{部署IP}:3000,全局指标大盘长期观测入口 - TiDB Dashboard:
http://{PD节点IP}:2379/dashboard,集群实时诊断、问题排查专属入口
3. 监控完整数据流转链路
- 指标暴露层:TiDB、PD、TiKV、监控代理等组件默认开放标准 metrics 接口,对外输出运行指标;
- 指标采集层:Prometheus 配置各组件 target 地址,定时轮询拉取指标并写入时序库存储;
- 可视化展示层:Grafana 查询 Prometheus 时序数据,渲染各类监控图表,做长期趋势观测;
- 原生诊断层:TiDB Dashboard 绕过 Prometheus,直接对接 PD 与各组件实时接口,获取瞬时状态、SQL、日志、集群拓扑等实时诊断数据,适配即时排障场景。
4. TiDB Dashboard 核心能力
- 集群总览:快速查看集群整体负载、节点在线状态、副本健康度、基础运行概况;
- 组件 & 主机监控:逐个查看 PD/TiDB/TiKV 实例运行状态、硬件资源、进程健康情况;
- 流量分析:统计集群读写 QPS、带宽、流量分布,定位热点库表、Region 热点;
- SQL 全量观测:罗列全量 SQL 耗时、执行次数、扫描行数、等待事件,筛选慢 SQL;
- 慢 SQL 深度分析:查看慢 SQL 执行计划、资源消耗、会话详情,定位索引缺失、大事务等根因;
- 故障诊断报告:内置常见集群故障检测规则,自动巡检生成诊断报告,辅助定位 Region 异常、调度异常、性能抖动问题;
- 组件日志查询:一站式检索 PD/TiDB/TiKV 运行日志,无需登录服务器逐节点查看;
- 性能数据采集分析:采集各组件线程、IO、CPU、后台任务性能指标,辅助深度性能调优。
5. 三级报警级别定义与处置标准
| 报警级别 | 判定标准 | 处置要求 |
|---|---|---|
| 紧急级别 | 核心服务不可用、进程停止、节点宕机故障 | 即刻人工介入排查止损,属于 P0 故障,优先处理 |
| 严重级别 | 集群可用性下降、核心指标恶化、业务存在潜在故障风险 | 持续盯控指标走势,快速定位诱因并限期修复 |
| 警告级别 | 非致命性错误、配置隐患、轻微指标异动提醒 | 日常巡检跟进,规划窗口期优化整改,规避升级风险 |
6. 内置报警能力
- 规则底座:内置常用报警规则,适配 Alertmanager 架构,可对接 Grafana 联动展示告警信息;
- 自定义能力:支持针对不同业务指标调整告警阈值;
- 规则示例解读
# PD_cluster_offline_tikv_nums
sum(pd_cluster_status {type="store_down_count"}) > 0
- 监控逻辑:统计离线 TiKV 节点数量大于 0 即触发告警;
- 业务含义:PD 默认 30 分钟未收到对应 TiKV 节点心跳,判定节点离线失联,属于紧急级故障告警。
7. 六大关键监控指标分组
7.1. System-Info 主机基础指标
覆盖服务器 CPU 使用率、内存水位、磁盘使用率 / IO 负载、网卡带宽、网络丢包,是集群硬件资源健康基线,提前预警资源耗尽、硬件故障。
7.2. Service Port Status 组件端口状态
巡检 PD、TiDB-Server、TiKV 各实例端口监听与连通性,快速发现进程崩溃、端口监听失败、防火墙拦截导致的组件不可访问问题。
7.3. PD 调度核心指标
聚焦 Region 调度均衡度、TSO 分配耗时、副本状态、集群拓扑、Store 健康度,管控集群数据分片调度稳定性,规避 Region 热点、副本缺失、调度阻塞问题。
7.4. TiDB-Server 业务接入指标
监控业务 QPS、SQL 执行延迟、客户端连接数、会话等待、事务耗时,直接反映业务访问性能,定位慢 SQL、连接打满、前端访问卡顿问题。
7.5. TiKV 存储底层指标
包含 Raft 副本同步状态、日志复制延迟、Coprocessor 计算耗时、磁盘写入吞吐、Raft 选举异常,保障底层存储高可用,预防副本不同步、存储 IO 瓶颈、Raft 故障。
7.6. TiDB Dashboard 集群实例指标
整合全集群实例运行状态、后台任务、巡检报告,面向运维日常快速诊断,补充大盘之外的实时集群诊断数据。
七、Lesson06:集群日常升级与维护(生产迭代运维)
1. 弹性扩缩容(在线无停机)
在线扩容 scale-out(TiDB/PD/TiKV/TiFlash)
- 编写扩容拓扑
scale-out.yaml; tiup cluster scale-out 集群名 scale-out.yaml;tiup cluster display校验新节点加入完成。- TiFlash扩容前置:确认版本支持,并开启enable-placement-rules
在线缩容 scale-in
tiup cluster display确认待下线节点 IP;tiup cluster scale-in --node 节点地址;- TiFlash 缩容前置:清空表 TiFlash 副本
alter table xxx set tiflash replica 0。
2. 集群日常管理操作
- 集群重命名:
tiup cluster rename ${cluster-name} ${new-name}; - 数据清理:清理日志 / 数据 / 全部资源
tiup cluster clean ${cluster-name} --log |--data|--all; - 集群销毁重建:
tiup cluster destroy销毁后重新 deploy 部署; - 时区管理:默认 UTC,支持自定义集群时区。
3. 集群版本升级两大方案
方案 1:HotFix 补丁升级(小 bug 修复,不升级大版本)
仅替换指定组件二进制,无需全集群迭代:
tiup cluster patch 集群名 补丁包.tar.gz -R tidb -N 节点IP
方案 2:完整版本升级(跨大版本迭代,分停机 / 不停机)
标准化流程:
-
升级本地 TiUP 工具:
tiup update --self; -
升级集群组件版本:
tiup update cluster; -
编辑拓扑
tiup cluster edit-config ${cluster-name}、 -
前置健康校验
tiup cluster check --cluster ${cluster-name}; -
两种升级模式:
- 不停机滚动升级:
tiup cluster upgrade <cluster-name> <target-version>(业务无中断,生产首选); - 停机升级:先 stop 集群,upgrade 后 start;
# 先停集群 → 离线升级 → 启动集群 tiup cluster stop <cluster-name> tiup cluster upgrade <cluster-name> <target-version> --offline tiup cluster start <cluster-name> - 不停机滚动升级:
-
tiup cluster display验证升级后版本。
升级常见故障处理
-
升级过程报错中断
- 排查:
tiup cluster audit查看操作审计记录,获取 audit-id; - 重试:
tiup cluster replay <audit-id>基于历史断点续跑升级流程,无需从头执行。
- 排查:
- evict leader 步骤等待过长 添加
--force参数跳过 leader 迁移等待步骤,加速升级进度,适合紧急变更场景。
- 升级后配套周边工具同步更新 示例升级 ctl 工具至指定版本:
tiup install ctl:v6.1.0
- 升级集群后同步更新 tidb-ctl、br、dumpling 等配套工具,保证工具与集群版本匹配。