0
0
0
0
博客/.../

TiDB Cluster 部署与运维(PCTP课程Module01)

 TiDB_001  发表于  2026-08-22

Module 01 TiDB Cluster 部署与运维

本文档是 关于TiDB 运维体系内容,聚焦TiDB 集群从部署、日常连接、参数配置、权限安全、监控告警、扩容升级全生命周期运维,下面分 6 大课时逐层拆解。

一、模块整体定位

核心目标:掌握 TiUP 全工具链,独立完成 TiDB 集群搭建、日常运维、故障观测、版本迭代,所有操作均基于 TiDB 官方运维工具 TiUP,适配生产环境标准流程。

二、Lesson01:TiDB Cluster 集群部署(集群搭建核心)

1. 学习目标

  1. 理解 TiUP 运维工具定位与全部能力;
  2. 完整掌握 TiUP 部署 TiDB 集群标准化流程;
  3. 熟记集群组件启停顺序、操作命令;
  4. 理清 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任意版本;

  • 前置检查项(必须全部满足否则部署失败):

    1. 关闭 Swap、防火墙;
    2. 同步 NTP 时间服务;
    3. 系统内核、内存参数调优;
    4. 节点间 SSH 免密 sudo 互通;
    5. 安装 numactl 绑定 CPU 资源。

4. 集群启停规范(生产严格遵守)

  1. 启动顺序:PD → TiKV → TiFlash → TiDB

    • PD 是元数据调度中心,必须最先启动,TiDB 依赖 PD 获取路由元数据最后启动;
    • 首次启动初始化密码:tiup cluster start xxx --init
  2. 停止顺序:TiDB → TiFlash → TiKV → PD(和启动完全反向)

    • 先切断业务接入层,再关闭存储,最后销毁元数据服务,顺序错误会出现 Region 异常、元数据丢失;
    • 命令:tiup cluster stop xxx

5. 目录结构定义

  1. deploy_dir部署目录:存放二进制、配置文件、启停脚本,默认~/tidb-deploy
  2. data_dir数据目录:TiKV/TiFlash 等组件数据存储位置,默认~/tidb-data
  3. log_dir日志目录:各组件运行日志,可在topology.yaml自定义路径;
  4. 日志排查入口:故障排查依托Dashboard 日志检索、Grafana 指标联动定位故障。

三、Lesson 02 TiDB 的连接管理(接入层运维)

1. TiDB Server 核心连接特性

  1. 完全兼容 MySQL5.7 协议,业务无需大幅改造;
  2. 无状态计算节点:不存储任何会话数据,可无限水平扩容,前端搭配负载均衡分摊连接压力;
  3. 默认接入端口 4000。

2. 客户端接入类型

  1. 命令行:mysql -u 用户名 -h 地址 -P 4000
  2. GUI 可视化:Navicat、DBeaver、phpMyAdmin;
  3. 开发驱动: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 持久化;

  • 修改两类方式:

    1. TiUP 离线修改:tiup cluster edit-config,执行reload滚动重启组件生效;
    2. 在线动态修改:set config tikv xxx,无需重启立即生效(仅部分参数支持);
  • 查询: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

必填要素说明:

  1. -h:指定 TiDB Server 节点 IP / 域名,远程访问不可省略;
  2. -P:TiDB 默认服务端口 4000,端口修改后必须显式指定;
  3. -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. 角色默认内置特性

  1. 默认锁定状态:角色本身无法直接登录数据库,仅作为权限中转容器;
  2. 无独立登录密码:角色不用于客户端登录,无需配置密码;
  3. 权限生效前置条件:用户绑定角色后,登录会话必须执行 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. 官方固定访问入口

  1. Grafana:http://{部署IP}:3000,全局指标大盘长期观测入口
  2. TiDB Dashboard:http://{PD节点IP}:2379/dashboard,集群实时诊断、问题排查专属入口

3. 监控完整数据流转链路

  1. 指标暴露层:TiDB、PD、TiKV、监控代理等组件默认开放标准 metrics 接口,对外输出运行指标;
  2. 指标采集层:Prometheus 配置各组件 target 地址,定时轮询拉取指标并写入时序库存储;
  3. 可视化展示层:Grafana 查询 Prometheus 时序数据,渲染各类监控图表,做长期趋势观测;
  4. 原生诊断层:TiDB Dashboard 绕过 Prometheus,直接对接 PD 与各组件实时接口,获取瞬时状态、SQL、日志、集群拓扑等实时诊断数据,适配即时排障场景。

4. TiDB Dashboard 核心能力

  1. 集群总览:快速查看集群整体负载、节点在线状态、副本健康度、基础运行概况;
  2. 组件 & 主机监控:逐个查看 PD/TiDB/TiKV 实例运行状态、硬件资源、进程健康情况;
  3. 流量分析:统计集群读写 QPS、带宽、流量分布,定位热点库表、Region 热点;
  4. SQL 全量观测:罗列全量 SQL 耗时、执行次数、扫描行数、等待事件,筛选慢 SQL;
  5. 慢 SQL 深度分析:查看慢 SQL 执行计划、资源消耗、会话详情,定位索引缺失、大事务等根因;
  6. 故障诊断报告:内置常见集群故障检测规则,自动巡检生成诊断报告,辅助定位 Region 异常、调度异常、性能抖动问题;
  7. 组件日志查询:一站式检索 PD/TiDB/TiKV 运行日志,无需登录服务器逐节点查看;
  8. 性能数据采集分析:采集各组件线程、IO、CPU、后台任务性能指标,辅助深度性能调优。

5. 三级报警级别定义与处置标准

报警级别 判定标准 处置要求
紧急级别 核心服务不可用、进程停止、节点宕机故障 即刻人工介入排查止损,属于 P0 故障,优先处理
严重级别 集群可用性下降、核心指标恶化、业务存在潜在故障风险 持续盯控指标走势,快速定位诱因并限期修复
警告级别 非致命性错误、配置隐患、轻微指标异动提醒 日常巡检跟进,规划窗口期优化整改,规避升级风险

6. 内置报警能力

  1. 规则底座:内置常用报警规则,适配 Alertmanager 架构,可对接 Grafana 联动展示告警信息;
  2. 自定义能力:支持针对不同业务指标调整告警阈值;
  3. 规则示例解读
# 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)

  1. 编写扩容拓扑scale-out.yaml
  2. tiup cluster scale-out 集群名 scale-out.yaml
  3. tiup cluster display 校验新节点加入完成。
  4. TiFlash扩容前置:确认版本支持,并开启enable-placement-rules

在线缩容 scale-in

  1. tiup cluster display确认待下线节点 IP;
  2. tiup cluster scale-in --node 节点地址
  3. TiFlash 缩容前置:清空表 TiFlash 副本alter table xxx set tiflash replica 0

2. 集群日常管理操作

  1. 集群重命名:tiup cluster rename ${cluster-name} ${new-name}
  2. 数据清理:清理日志 / 数据 / 全部资源tiup cluster clean ${cluster-name} --log |--data|--all
  3. 集群销毁重建:tiup cluster destroy销毁后重新 deploy 部署;
  4. 时区管理:默认 UTC,支持自定义集群时区。

3. 集群版本升级两大方案

方案 1:HotFix 补丁升级(小 bug 修复,不升级大版本)

仅替换指定组件二进制,无需全集群迭代:

tiup cluster patch 集群名 补丁包.tar.gz -R tidb -N 节点IP

方案 2:完整版本升级(跨大版本迭代,分停机 / 不停机)

标准化流程:

  1. 升级本地 TiUP 工具:tiup update --self

  2. 升级集群组件版本:tiup update cluster

  3. 编辑拓扑tiup cluster edit-config ${cluster-name}

  4. 前置健康校验tiup cluster check --cluster ${cluster-name}

  5. 两种升级模式:

    • 不停机滚动升级: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>
    
  6. 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 等配套工具,保证工具与集群版本匹配。

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论