【兼容MySQL】关于分布式SQL数据库“TiDB”【OSS】
目录
我是技术销售部门的大原。
这次,我要写的是 TiDB
TiDB 概述
■ TiDB 是一个开源NewSQL 数据库,支持混合事务和分析处理(HTAP) 工作负载。
■兼容“MySQL”,具有水平扩展性、强一致性、高可用性。它涵盖了OLTP(在线事务处理)和OLAP(在线分析处理)与HTAP,适用于需要高可用性和大规模数据强一致性的各种用例。
■ 作为一家日本公司的实施示例,它也被用于运营 QR 支付服务的 PayPay 的基础设施中。
◇ 报价:支持交易的支付平台工程师
TiDB 特性
水平分布横向扩展/横向收缩
- TiDB 计算与存储分离的架构设计,允许计算/存储容量根据需要独立在线扩展/扩展。
多副本高可用
・在多个副本中存储数据的副本使用Multi-Raft协议来获取事务日志。
即使少量副本出现故障,这也可以确保强一致性和可用性,因为只有在数据成功写入大多数副本时事务才会提交。
- 您可以根据需要配置Region和副本的数量,以满足不同灾备级别的需求。
实时HTAP
提供两种存储引擎:式存储引擎TiKV列式存储引擎TiFlash
TiFlash 使用 Multi-Raft Learner 协议实时复制 TiKV 中的数据,保证 TiKV 行式存储引擎和 TiFlash 列式存储引擎之间的数据一致性。
TiKV 和 TiFlash 可以根据需要部署在不同的机器上,解决 HTAP 资源分离问题。
云原生分布式数据库
TiDB 是专为云设计的分布式数据库,为云平台提供灵活的可扩展性、可靠性和安全性,允许用户灵活扩展 TiDB 以满足其工作负载需求。
TiDB 每个数据至少有三个副本,并且可以安排在不同的云可用区中,以容忍数据中心范围内的中断。
TiDB Operator帮助管理 Kubernetes 上的 TiDB,并自动执行与操作 TiDB 集群相关的任务,从而可以轻松地将 TiDB 部署在任何提供托管 Kubernetes 的云上。
TiDB Cloud完全托管的 TiDB服务,只需单击几下,您就可以在云中部署和运行 TiDB 集群。
*TiDB Cloud 是部署在 AWS、Azure 和 GCP 等云平台内的托管服务(付费服务)。
兼容MySQL5.7协议和MySQL生态系统
・TiDB 兼容 MySQL 5.7 协议、常见 MySQL 功能以及 MySQL 生态系统,因此只需少量代码即可完成将现有应用程序迁移到 TiDB,无需进行大量代码更改即可。
TiDB还拥有数据迁移工具
TiDB 架构
◇ 引用: TiDB 架构
作为一个分布式数据库,TiDB 被设计为由多个组件组成。这些组件相互通信,构成一个完整的 TiDB 系统。
TiDB 服务器
・TiDB Server 是一个无状态 SQL 层,向外界公开 MySQL 协议的连接端点。 TiDB 服务器接收 SQL 请求,进行 SQL 解析和优化,最终生成分布式执行计划。
- 水平扩展,通过Linux虚拟服务器(LVS)/HAProxy/F5等负载均衡组件向外界提供集成接口。不存储任何数据,仅用于计算和 SQL 分析,并向 TiKV 节点(或 TiFlash 节点)发送实际的数据读取请求。
PD(布局驱动程序)服务器
・PD服务器是负责管理整个集群元数据的组件,至少由三个节点组成。
- 存储每个 TiKV 节点的实时数据分布元数据和整个 TiDB 集群的拓扑结构,提供 TiDB 仪表板管理 UI,并为分布式事务分配事务 ID。
・PD 服务器不仅存储集群元数据,还根据 TiKV 节点实时上报的数据分布状态,向特定 TiKV 节点发送数据调度命令。
存储服务器
◇ TiKV 服务器
・TiKV 是分布式事务型键值存储引擎,TiKV 服务器负责存储数据。
・每个 Region 存储特定 key 范围的数据,即从 StartKey 到 EndKey 的左闭右开区间,每个 TiKV 节点都有多个 Region。 TiKV API 原生支持键值对级别的分布式事务,默认支持快照隔离级别隔离。
- TiDB 服务器处理完 SQL 语句后,将 SQL 执行计划转换为对 TiKVAPI 的实际调用。由于数据存储在 TiKV 中,并且 TiKV 中的所有数据跨多个副本(默认 3 个副本)自动维护,因此 TiKV 具有原生高可用性并支持自动故障转移。
◇ TiFlash服务器
-TiFlash服务器是一种特殊类型的存储服务器。与常规 TiKV 节点不同,TiFlash 逐列存储数据,主要旨在加快分析处理速度。
概括
它是一个高度可用的服务,是开源的(OSS),水平分布的,并且与MySQL兼容,因此将其添加为社交游戏和EC站点等Web服务的数据库可能会很有趣。