Tidb 简介与应用实践

张 佃栋 TiDB 2021-02-20 224 次浏览 , , , 没有评论

背景

当 mysql 的一个大表总数达上亿时,mysql 性能变的很差,且新增或修改字段、索引也需要花费很长时间,至少十几个小时。这种情况,一般的做法是分库分表,这种方法需要业务层根据规则,物理分库分表,比如按照时间分表,业务代码需要兼容。Tidb 是分布式 newsql 数据库,兼容了大部分 mysql 协议和操作,业务不需要调整,数据库性能也能保证。

Tidb 介绍

1.开源分布式的关系型数据库

TiDB 是开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案

2.整体架构

要深入了解 TiDB 的水平扩展和高可用特点,需要了解 TiDB 的整体架构。TiDB 集群主要包括三个核心组件:TiDB Server,PD Server 和 TiKV Server。此外,还有用于解决用户复杂 OLAP 需求的 TiSpark 组件。

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

2.2.PD Server
Placement Driver (简称 PD) 是整个集群的管理模块,其主要工作有三个:一是存储集群的元信息(某个 Key 存储在哪个 TiKV 节点);二是对 TiKV 集群进行调度和负载均衡(如数据的迁移、Raft group leader 的迁移等);三是分配全局唯一且递增的事务 ID。
PD 通过 Raft 协议保证数据的安全性。Raft 的 leader server 负责处理所有操作,其余的 PD server 仅用于保证高可用。建议部署奇数个 PD 节点。

2.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 为单位进行调度。

2.4.TiSpark
TiSpark 作为 TiDB 中解决用户复杂 OLAP 需求的主要组件,将 Spark SQL 直接运行在 TiDB 存储层上,同时融合 TiKV 分布式集群的优势,并融入大数据社区生态。至此,TiDB 可以通过一套系统,同时支持 OLTP 与 OLAP,免除用户数据同步的烦恼。

3.环境部署

Linux 操作系统平台建议为 CentOS7.3 及以上,同时也支持其他主流的 Linux 操作系统环境。
硬盘至少是 SSD 的机器,SAS 盘不行,推荐 pcie。
部署一套集群至少需要 5 台机器,2TiDB,3TikV,PD 可以和 TiDB 部署在同服务器上。

Tidb 优势

1.水平弹性无限制扩展

分布式的 TiDB 可随着你的数据增长而无缝地水平扩展,只需要通过增加更多的机器来满足业务增长需要,应用层可以不用关心存储的容量和吞吐。对比 mysql,需要 lvm 辅助磁盘扩容。

2.故障自恢复及异地多活

TiDB 使用多副本进行数据存储,并依赖业界最先进的 Raft 多数派选举算法确保数据 100% 强一致性和高可用。副本可跨地域部署在不同的数据中心,主副本故障时自动切换,无需人工介入,自动保障业务的连续性,实现真正意义上的异地多活。

3.一致性的分布式事务

可以把 TiDB 想象成一个单机的 RDBMS,ACID 事务可以在多节点间进行,无需担心一致性问题。 TiDB 对业务没有任何侵入性,是传统的数据库中间件、数据库分库分表等优雅的替换方案。

4.高度兼容 MySQL,零成本迁移

TiDB 的通讯协议与 MySQL 高度兼容,你可以轻松地像使用单机数据库一样,用 TiDB 替换 MySQL 来支持你的业务,而几乎无需修改代码。 MySQL 的客户端管理工具及社区所有的周边工具都可直接接入,极大降低学习和使用成本。
总之,迁移方便,不用分库分表,逻辑不用做兼容处理,程序调用也无需处理,mysql 的客户端工具正常使用。

5.更优的性能优势

TiDB 根据存储、网络、距离等因素,动态进行负载均衡调整,以保证更优的读写性能。TiDB 在大数据量下复杂查询方面,相比 MySQL 有绝对的性能优势。
5.1 大表建立索引快
5.2 大表修改列表快,比如加列,修改列属性
Mysql 大表建立索引和修改表需要花费大量的时间。

本文出自张佃栋de博客,转载时请注明出处及相应链接。

本文永久链接: https://zhangdd.com/1060.html

发表评论

邮箱地址不会被公开。 必填项已用*标注

回顶部