14.6.2 TiDB的介绍

2025-05-25 22:21:53 更新

TiDB是新一代开源分布式NewSQL数据库——结合传统的关系型数据库和NoSQL数据库特性的新型数据库。模型受Google Spatmer/Fl论文的启发,实现了无限的水平伸缩,具备强一致性的高可用性,无需修改代码即可从MySQL轻松迁移至TiDB,分库分表后的MySQL集群亦可通过TiDB工具进行实时迁移。支持外部一致的分布式事务,完全支持标准的ACID事务。

TiDB结合RDBMS和NoSQL的优点,部署简单,在线弹性扩容和异步表结构变更不影响业务,按需扩展吞吐或存储,轻松应对高并发、海量数据场景,真正做到了自动故障恢复保障数据安全。TiDB 的目标是为 OLTP (On-Line Transaction Processing)和 OLAP (On-Line AnalyticalProcessing )场景提供一站式的解决方案。

TiDB集群主要包括三个核心组件:TiDB Server, PD Servei■和TiKV Server。此外,还有

用于解决用户复杂OLAP需求的TiSpark组件和简化云上部署管理的TiDB Operator组件。如

图14-12所示,通常TiDB集群架构至少部署3个TiKV节点,3个PD节点和2个TiDB节点,随着业务的增长,按照需求添加相应的节点。

1) TiDB Server

TiDB Sei-ver负责接收SQL请求,处理SQL相关的逻辑,并通过PD找到存储计算所需数据的TiKV地址,与TiKV交互获取数据,最终返回结果。TiDB Server是无状态的,其本身并不存储数据,只负责计算,可以无限水平扩展,可以通过负载均衡组件(如LVS、HAProxy或F5)对外提供统一的接入地址。

2 ) PD Server

Placement Driver (PD)是整个集群的管理模块,其主要工作有三个:一是存储集群的元信

息(某个Key存储在哪个T1KV节点);二是对TiKV集群进行调度和负载均衡(如数据的

迁移、Raft group leader的迁移等);三是分配全局唯一且递增的事务ED。

PD通过Raft协议保证数据的安全性。Raft的leader server负责处理所有操作,其余的PD

Server仅用于保证高可用。建议部署奇数个PD节点。

3) TiKV Server

TiKV Server负责存储数据,从外部看TiKV是一个分布式的提供事务的Key-Value存储

引擎。存储数据的基本单位是Region,每个Region负责存储一个Key Range (从StartKey到

EndKey的左闭右开区间)的数据,每个TiKV节点会负责多个Region。TiKV使用Raft协

议做复制,保持数据的一致性和容灾。副本以Region为单位进行管理,不同节点上的多个

Region构成一个Raft Group,互为副本。数据在多个TiKV之间的负载均衡由PD调度,这

里也是以Region为单位进行调度。

4) TiSpaik

TiSpark作为TiDB中解决用户复杂OLAP需求的主要组件,将Spark SQL直接运行在TiDB

存储层上,同时融合TiKV分布式集群的优势,并融入大数据社区生态。至此,TiDB可以通

过一套系统,同时支持OLTP与OLAP,免除用户数据同步的烦恼。

5 ) TiDB Operator

TiDB Operator提供在主流云基础设施(Kubemetes)上部署管理TiDB、集群的能力。它

结合云原生社区的容器编排最佳实践与TiDB的专业运维知识,集成一键部署、多集群混部、

自动运维、故障自愈等能力,极大地降低了用户使用和管理TiDB的门槛与成本。

TiDB具有无限水平扩展和高可用性的特点,通过简单地增加新节点即可实现计算和存储

能力的扩展,轻松地应对高并发、海量数据的应用场景。T1DB的整体架构参考Google SpannerZFl

的设计,也分为TiDB和TiKV上下两层。TiDB对应的是GoogleFl,是一层无状态的SQL层,

负责与客户端交互,对客户端体现的是MySQL网络协议,且客户端需要通过一个本地负载均

衡器将SQL请求转发到本地或最近的数据中心中的TiDB服务器。TiDB服务器负责解析用户

的SQL语句,生成分布式的查询计划,并翻译成底层Key-Value操作发送给T1KV,而T1KV

则是真正存储数据的地方,对应的是Google Spanner,是个分布式Key-Value数据库,支持弹

性水平扩展、自动的灾难恢复和故障转移,以及ACID跨行事务。另外,TiDB架构采用PD集

群来管理整个分布式数据库,PD服务器在T1KV节点之间以Region作为单位进行调度,将部

分数据迁移到新添加的节点上,完成集群调度和负载均衡。