当前位置: 首页 > news >正文

【赵渝强老师】TiDB的调度集群PD实例

b447

Placement Driver(简称PD)是TiDB里面全局中心总控节点,是整个集群的管理模块,负责整个集群的调度。TiDB作为一个分布式高可用存储系统,系统需要具备多副本容错,动态扩容、缩容,容忍节点掉线以及自动错误恢复的功能。为了满足这些功能,TiDB就需要收集足够的信息,比如每个节点的状态、每个Raft Group的信息等。PD根据这些信息以及调度的策略,制定出尽量满足这些需求的调度计划,并提供基本操作来完成这个计划。PD的主要工作体现在以下三个方面:

  1. 存储集群的元信息,例如:Region存储在哪个TiKV节点;
  2. 对TiKV集群进行调度和负载均衡,如:数据的迁移、Raft Group Leader的选举等;
  3. 分配全局唯一且递增的事务ID和TSO。

提示:PD本身也是一个集群,通过Raft协议保证数据的安全性和一致性。PD集群中的Leader Server负责处理所有操作,其余的PD Server仅用于保证高可用。建议部署奇数个PD节点,一般线上推荐至少部署3个节点。

image.png
点击这里查看视频讲解:【赵渝强老师】TiDB的调度集群PD实例

一、 PD的信息收集

PD的调度功能依赖于整个集群信息的收集,简单来说,PD需要知道每个TiKV节点的状态以及每个Region的状态。TiKV集群会向PD汇报以下两类消息:

1.1 每个TiKV节点会定期向PD汇报节点的状态信息

TiKV节点(也叫Store)与PD之间存在心跳包,一方面PD通过心跳包检测每个Store是否存活,以及是否有新加入的Store;另一方面,心跳包中也会携带这个Store的状态信息,主要包括:

  • 总磁盘容量
  • 可用磁盘容量
  • 承载的Region数量
  • 数据写入/读取速度
  • 发送/接受的Snapshot数量(副本之间可能会通过Snapshot同步数据)
  • Store是否过载
  • labels标签信息(标签是具备层级关系的一系列Tag,能够感知拓扑信息)

通过使用命令行工具pd-ctl可以查看到TiKV Store的状态信息。

1.2 每个Raft Group的Leader会定期向PD汇报Region的状态信息

每个Raft Group的Leader和PD之间存在心跳包,用于汇报这个Region的状态,主要包括下面几点信息:

  • Leader的位置
  • Followers的位置
  • 掉线副本的个数
  • 数据写入/读取的速度

二、 TSO

TSO是TimeStamp Oracle的缩写,即:TiDB集群的时间戳,TSO由PD分配。TSO时间戳用于为事务和数据分配时间标记。该分配机制对于在TiDB中执行分布式事务模型至关重要。下面示例显示了如何获取TiDB当前的TSO:

tidb> start transaction;
tidb> set @ts := @@tidb_current_ts;
tidb> rollback;
tidb> select @ts;# 输出的信息如下:
+--------------------+
| @ts                |
+--------------------+
| 456438472689844225 |
+--------------------+
1 row in set (0.002 sec)

提示:注意由于TSO时间戳是按事务分配的,所以需要在一个事务中获取时间戳TSO。否则将无法获取到TSO的值,

例如:

tidb> set @ts := @@tidb_current_ts;
tidb> select @ts;
输出的信息如下:
+------+
| @ts  |
+------+
| 0    |
+------+
1 row in set (0.004 sec)

从上例中得到的TSO时间戳是一个十进制数,可以使用以下SQL函数来解析时间戳:

tidb> select tidb_parse_tso(456438472689844225);
输出的信息如下:
+------------------------------------+
| TIDB_PARSE_TSO(456438472689844225) |
+------------------------------------+
| 2026-03-05 19:36:33.696000         |
+------------------------------------+

三、 PD的命令行工具:pd-ctl

PD Control(简称:pd-ctl)是PD的命令行工具,用于获取集群状态信息和调整集群。 下面通过几个简单的示例来演示其用法。

提示:pd-ctl工具位于中控机的.tiup/components/ctl/v8.5.1目录下。

(1)获取TiDB集群的状态信息。

./pd-ctl cluster status --pd http://192.168.79.11:2379# 输出的信息如下:
{"raft_bootstrap_time": "2026-02-28T17:13:53.332180613+08:00","is_initialized": true,"replication_status": ""
}

(2)获取TiDB集群中的Store信息,即:TiKV节点和TIFlash节点。

./pd-ctl store check up --pd http://192.168.79.11:2379# 输出的信息如下:
{"count": 6,"stores": [{"store": {"id": 1,"address": "192.168.79.13:20160","labels": [{"key": "host","value": "Chongqing"}],"version": "8.5.1","peer_address": "192.168.79.13:20160","status_address": "192.168.79.13:20180",......"state_name": "Up"},"status": {"capacity": "45.02GiB","available": "34.36GiB","used_size": "1.286GiB","leader_count": 3,"leader_weight": 1,"leader_score": 3,"leader_size": 3,"region_count": 7,......}},{"store": {"id": 4,"address": "192.168.79.11:20160","labels": [{"key": "host","value": "Beijing"}],......},"status": {......}},{"store": {"id": 5,"address": "192.168.79.12:20160","labels": [{"key": "host","value": "Shanghai"}],......},"status": {......}},{"store": {"id": 277,"address": "192.168.79.11:3930","labels": [{"key": "engine","value": "tiflash"},{"key": "zone","value": "beijing"}],......},"status": {......}},{"store": {"id": 278,"address": "192.168.79.12:3930","labels": [{"key": "engine","value": "tiflash"},{"key": "zone","value": "shanghai"}],......},"status": {......}},{"store": {"id": 279,"address": "192.168.79.13:3930","labels": [{"key": "engine","value": "tiflash"},{"key": "zone","value": "chongqing"}],......},"status": {......}}]
}
http://www.jsqmd.com/news/820947/

相关文章:

  • 零配置AI知识库构建:AnythingLLM原生嵌入器的终极实战指南
  • 2026年度南昌GEO优化公司权威TOP5榜单:多维度全场景深度测评 - 元点智创
  • 别再死记硬背Tcl语法了!从‘man redirect’和‘help grep’开始,掌握高效自学命令行的正确姿势
  • 数据平台怎么搭建?数据平台与业务中台和主数据平台有什么区别?
  • 不用 AI 就会被淘汰——这是我听过最懒惰的恐吓
  • PearProject梨子项目:如何快速搭建轻量级远程协作系统的完整指南
  • 如何使用 ast-grep 实现 AR 代码中的空间关系模式检查:5个实用技巧
  • 2026年度深圳GEO优化公司权威TOP5榜单:多维度全场景深度测评 - 元点智创
  • TrollInstallerX完整指南:三步搞定iOS越狱神器安装
  • 2026机器人领域人才供需趋势洞察
  • 2026 年高端系统门窗五金厂家权威实力榜 - 海棠依旧大
  • 如何构建高效的Crypto-JS加密监控系统:完整设计指南
  • 《定制语言 AI 的商业指南》
  • 东莞黄金回收哪家专业?5 家平台实测认准收的顶 - 奢侈品回收测评
  • 手把手教你用Python通过RS-232控制ITECH IT63XX电源(附完整代码)
  • 广州海珠区一条龙搬家服务评测:靠谱首选全解析 - 奔跑123
  • HTC Vive Pro Eye 眼动数据在Unity中的实时解析与应用
  • 如何用RoomGPT的AI推荐系统打造专属梦想空间:3步轻松实现个性化家居设计
  • 终极指南:如何用InVideo为UE5项目注入实时视频流处理能力
  • 2026年合肥留学中介测评,录取案例多机构对比,推荐哪家优选 - 速递信息
  • 如何用Weights Biases提升FinRL金融交易实验的可复现性:完整跟踪指南
  • ARMv8虚拟内存管理:TCR_EL2寄存器详解与配置
  • 如何高效使用IDEA插件实现隐秘阅读:程序员的3个实用技巧
  • 2026闸机检票品牌推荐:全场景高稳定验票解决方案选型指南 - 速递信息
  • 答辩前 3 天,我用 PaperXie 的 AI PPT 功能,把答辩 PPT 从 0 改到了能直接上台
  • 开源MCP服务器:用AI自然语言查询OCDS公共采购数据
  • 深入解析fmt库:现代C++格式化库中的6大设计模式实战指南
  • 定制语言 AI 的商业指南 第二部分
  • 告别云端延迟:用RK3568网关在工厂边缘做实时AI质检(含OpenCV配置)
  • 2026体育围网行业优质厂家推荐 安平县鼎恒金属丝网制品有限公司 相约2026中国厦门体博会 专注体育围网运动场围网球场围网 - 奔跑123