文件菜单

TiDB架构

与传统的独立数据库相比,TiDB具有以下优势:

  • 具有灵活、弹性的可伸缩性的分布式架构。
  • 完全兼容MySQL 5.7协议,MySQL的通用特性和语法。要将应用程序迁移到TiDB,在许多情况下不需要更改一行代码。
  • 当少数副本发生故障时,支持自动故障转移的高可用性;对应用程序透明。
  • 支持ACID事务,适用于银行转账等一致性要求较强的场景。
  • 提供了丰富的系列数据迁移工具用于迁移、复制或备份数据。

作为一个分布式数据库,TiDB被设计成由多个组件组成。这些组件相互通信,形成一个完整的TiDB系统。架构如下:

TiDB架构

TiDB服务器

TiDB服务器是一个无状态SQL层,它向外部公开MySQL协议的连接端点。TiDB服务器接收SQL请求,执行SQL解析和优化,并最终生成分布式执行计划。横向扩展,通过负载均衡组件(LVS、HAProxy、F5)对外提供统一接口。它不存储数据,仅用于计算和SQL分析,将实际的数据读请求发送到TiKV节点(或TiFlash节点)。

放置驱动(PD)服务器

PD服务器是整个集群的元数据管理组件。存储每个TiKV节点实时数据分布的元数据和整个TiDB集群的拓扑结构,提供TiDB Dashboard管理UI,为分布式事务分配事务id。PD服务器是整个TiDB集群的“大脑”,它不仅存储集群的元数据,还根据TiKV节点上报的数据分布状态,实时向具体的TiKV节点发送数据调度命令。另外,PD服务器至少由3个节点组成,具有高可用性。建议PD节点数量为奇数。

存储服务器

TiKV服务器

TiKV服务器负责存储数据。TiKV是一个分布式事务性键值存储引擎。地区是存储数据的基本单位。每个Region存储特定Key Range(从StartKey到EndKey的左闭右开区间)的数据。每个TiKV节点中存在多个region。TiKV api在键值对级别上提供对分布式事务的本机支持,默认情况下支持快照隔离级别隔离。这是TiDB在SQL级别支持分布式事务的核心。在处理SQL语句之后,TiDB服务器将SQL执行计划转换为对TiKV API的实际调用。因此,数据存储在TiKV中。TiKV中的所有数据都在多个副本中自动维护(默认情况下是三个副本),因此TiKV具有本机高可用性并支持自动故障转移。

TiFlash服务器

TiFlash Server是一种特殊类型的存储服务器。与普通的TiKV节点不同,TiFlash采用列存储数据,主要是为了加速分析处理。