暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TIDB数据库leader和region的关系

原创 陈耀斌 2025-08-28
259

好的,我们来详细解释一下 TiDB 数据库中 Leader 和 Region 的关系。这是一个核心概念,理解了它,就理解了 TiDB 分布式架构的精髓。

核心关系总结

一句话概括:

一个 Region 是数据存储的基本单位,而每个 Region 在任一时刻都有一个唯一的 Leader。Leader 负责处理该 Region 的所有读写请求。

可以把它们的关系理解为:

• Region: 一个“数据分片”或“数据块”。

• Leader: 这个“数据分片”的“管理员”或“负责人”。

1. 详细概念解释

什么是 Region?

• TiDB 底层使用 TiKV 作为存储引擎,数据以 Key-Value 形式存储。

• 所有数据根据 Key 的范围被自动切分成很多个连续的片段,每个片段就称为一个 Region。

• 每个 Region 默认大小约为 96MiB。当某个 Region 的大小超过这个阈值时,它会自动分裂成两个新的 Region。反之,如果变小了,也会自动合并。

• Region 是数据调度和负载均衡的基本单位。PD(Placement Driver)组件负责在 TiKV 节点之间移动 Region,使得存储容量和访问流量在各个节点上保持均衡。

什么是 Leader?

• TiKV 采用 Raft 共识协议来保证数据在多副本之间的一致性和高可用性。

• 每个 Region 都会有多个副本(默认为 3 个),这些副本共同组成一个 Raft Group。

• 在 Raft Group 中,有一个副本会被选举为 Leader,其他副本则是 Follower(有时还会有一个 Learner)。

• 所有客户端的读写请求都必须由 Leader 副本处理:

◦ 写请求: Leader 接收请求,并将数据变更复制给 Follower,大多数副本(N/2+1)持久化成功后,Leader 才会告知客户端写入成功。

◦ 读请求: Leader 直接提供本地数据,保证能读到最新已提交的数据。

• Follower 副本的唯一作用是参与选举和同步数据,以提供故障转移能力,它们不直接处理用户请求。

2. Leader 和 Region 的工作流程

1. 数据访问: 当客户端(TiDB)要读写某条数据时,它会先询问 PD 服务器:“这条数据在哪个 Region 里?这个 Region 的 Leader 在哪个 TiKV 节点上?”

2. 路由定位: PD 返回该 Region 的 Region ID 和其当前 Leader 所在的 TiKV 节点地址。

3. 直接请求: 客户端缓存这个路由信息,然后直接向目标 TiKV 节点的 Leader 发送读写请求。

4. 故障转移: 如果 Leader 所在的 TiKV 节点发生故障,剩下的 Follower 会检测到心跳超时,并立即发起新一轮选举,选出一个新的 Leader。PD 会更新全局的路由信息,将后续请求导向新的 Leader。这个过程对应用透明,保证了高可用性。

3. 关键特性和重要性

1. 负载均衡:

◦ PD 会持续监控所有 TiKV 节点的 Leader 数量。

◦ 如果一个节点上的 Leader 过多(意味着它处理的请求过多,成为热点),PD 会主动将一些 Region 的 Leader 身份转移(Transfer Leader)到其他负载较轻的节点上,从而实现访问流量的均衡。

2. 高可用性:

◦ 正是由于 Leader/Follower 机制,即使少数副本(如 3 副本中的 1 个)宕机,系统也能自动选举出新 Leader,持续提供服务,实现 RPO=0,RTO < 30s 的故障恢复。

3. 线性一致性:

◦ 所有读写都通过单个 Leader 进行,天然避免了分布式系统中复杂的数据一致性问题,保证了强一致性。

4. 扩展性:

◦ 通过增加 TiKV 节点,PD 会自动将新创建的 Region 及其 Leader 调度到新节点上,从而实现存储容量和读写性能的线性扩展。

4. 实际运维中的体现

你可以通过以下 SQL 语句或监控界面查看 Leader 和 Region 的信息:

• 查看所有 Region 的信息,包括其 Start Key/End Key, Leader 所在 store,副本分布等:

SELECT * FROM INFORMATION_SCHEMA.TIKV_REGION_STATUS LIMIT 10;

• 在 TiDB 的 Grafana 监控面板中,有专门的 “TiKV” -> “Details” -> “Region” 面板,可以查看:

下图是五副本

◦ Region Health: 监控每个 Region 的副本状态。

◦ Region Leader Distribution: 可视化每个 TiKV 节点上担任 Leader 的数量,这是判断负载是否均衡的关键指标。

◦ Leader Balance Ratio: 直接显示 Leader 分布的均衡度。

总结

特性    Region                                                                                   Leader

角色 数据分片,存储的基本单位                                                       副本角色,请求的调度者

数量 非常多,随数据量增长而增长                                                    与 Region 数量 1:1

作用 划分数据范围,实现数据分散存储                                             处理读写请求,保证数据一致性

调度 PD 调度 Region 以实现存储均衡                                               PD 调度 Leader 以实现访问流量均衡

理解 Region 是“数据”的单位,而 Leader 是“访问”的入口 是掌握 TiDB 分布式架构的关键。它们共同协作,实现了 TiDB 的水平扩展、高可用和强一致性。

最后修改时间:2025-08-28 13:54:43
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论