TiDB 单机最小集群,PD 主要承担哪些核心工作?

【TiDB 使用环境】测试环境
【TiDB 版本】v7.5 Community
【部署方式】机器部署(本地虚拟机)
【操作系统/CPU 架构/芯片详情】x86_64 CentOS7
【机器部署详情】2C 4G内存,普通SSD磁盘
【集群数据量】少量测试数据
【集群节点数】TiUP单机最小集群(1PD+1TiDB+1TiKV)
【问题复现路径】

  1. 通过TiUP部署一套标准单机测试集群
  2. 查看集群组件构成,区分TiDB、TiKV、PD各自角色

【遇到的问题:问题现象及影响】
正在学习TiDB集群架构,对PD组件职责存在疑问:

  1. PD除了负责Region调度之外,还有哪些核心能力?
  2. 单机学习环境只有单个PD实例,生产环境为什么推荐部署3个PD节点?
  3. 如果PD进程意外停止,集群还能不能正常读写数据?

【资源配置】暂无Dashboard截图
【复制黏贴 ERROR 报错的日志】无报错
【其他附件:截图/日志/监控】暂无
【已查阅操作】浏览官方架构文档,知道PD是集群的“调度中心”,想了解故障场景下集群表现与部署最佳实践。

1、PD负责调度、事务全局的时钟分配TSO、region信息的管理;
2、推荐3个是避免单点;
3、PD停止,无法正常读写数据,一是无法获取TSO,二也无法得知region的分布,因此集群就挂了。

3 个赞

TiKV 负责存数据、跑计算,PD 负责管元数据、发时间戳、调负载、保副本,整个集群的大脑。

PD相当于集群的大脑,主要负责调度工作(region的leader均衡)、元数据管理、生成TSO

1、PD负责 Region 的调度和负载均衡, 集群元数据管理、 全局事务 ID (TSO) 分配;
2、3个PD 节点是为了避免单点故障、2个可能会出现脑裂、3个Raft算法组成一个高可用集群,会选举leader来提供服务,增加容错;
3、PD进程意外停止,如果是leader,集群无法提供正常读写服务。

PD 负责 TSO、元数据、Region/Leader 调度与成员管理。生产 3 PD 为多数派高可用;单 PD 挂掉后已有数据短时可读写,但无法分配新事务时间戳/调度,集群会逐渐不可用。学习环境单 PD 可以,生产必须奇数多副本。

  1. PD负责分发TSO和维护整个集群的数据分布。TSO用来仲裁TiKV/TiDB事务的先后顺序和可见性,若没有TSO,整个TiDB集群的读写先后顺序无法确立。运行时,数据可能会以Region为单位进行迁移/分裂/合并,PD内部的RegionTree会维护整个集群的Region分布状态,tidb或其他tikv client在运行时需要查询“我要查找的数据在哪个region里,这个region现在在哪个tikv里”
  2. 每个PD均内置了一个etcd来维护其高可用,每个pd内置的etcd组成了一个etcd集群。etcd集群保存了整个PD集群的一些关键状态信息,当个别pd损坏,但多于半数的pd/etcd存活时,etcd的状态信息仍然可以在存活的pd间读写,保证pd运行不中断。1个或者2个pd的集群不仅损坏1个pd就会完全无法提供服务,而且没法进行灰度升级等操作
  3. PD停止后,tikv客户端或tidb在读写数据时会直接在获取tso或更新region信息的代码路径上报错中止,导致整个集群完全不能提供服务

不管是最小部署,还是多节点部署,PD负责的任务是不变的呀

PD的功能与部署无关。

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。