The Overview of TiDB 4.0

Easter79
• 阅读 446

在上篇文章中,我司 CTO 黄东旭分享了 我们对“未来数据库”的展望,很高兴我们一直走在「写一个更好的数据库」的初心之路上。4 月 8 日是 PingCAP 成立五周年的日子,我们也在这一天发布了具有里程碑意义的 TiDB 4.0 首个 RC 版本。

在 4.0 里我们完成了很多重要的、很有潜力的特性,本文将从多角度介绍 TiDB 4.0,让大家从安装、使用、运维、生态及云等多个层面有所了解,也欢迎大家使用并反馈建议。

一分钟部署 TiDB 集群

「在单机部署一个 TiDB 集群要多久?」

之前,我们其实很难回答这个问题,但现在可以很自豪的说「一分钟」。为什么会这么快?因为我们专门为 TiDB 4.0 做了一个全新的组件管理工具—— TiUP

当然我们要先安装 TiUP,使用如下命令:

curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

装完之后,控制台会提示使用 tiup playground 来在单机启动一个 TiDB 集群,然后我们就可以使用 MySQL 客户端连接 TiDB 集群,并且愉快地开始测试了。

上面只是单机测试的情况,真的要生产环境上线了,我们如何部署 TiDB 集群呢?假设我们现在有十台机器,部署一个 TiDB 集群要多久?之前我们仍然很难回答这个问题,但现在,答案仍然是「一分钟」,因为我们可以方便地使用 TiUP cluster 功能

首先我们准备好部署拓扑,可以参考 TiUP cluster 的样例

然后执行 deploy 命令:

tiup cluster deploy test v4.0.0-rc topology.yaml  -i ~/.ssh/id_rsa

上面我们就部署好了一个名字叫做 test 的 TiDB 集群,使用最新的 v4.0.0-rc 版本。然后我们可以通过 test 这个名字来运维这个 TiDB 集群了,譬如使用 tiup cluster start test 来启动集群。

是不是很酷?更酷的是,TiUP 会管理 TiDB 整个生态里面的组件,无论是 TiDB、TiFlash,还是生态工具,都可以通过 TiUP 来进行管理和使用,用户也可以给 TiUP 添加对应的组件工具。

OLTP or OLAP,还是个难题吗?

我的业务到底是 OLTP 还是 OLAP?我们相信,很多时候,用户都不能很清楚的回答出来。但我们知道,用户最想要的是**「无论我的业务是怎样的,我要在你的数据库里面都能快速的跑出来结果」**。

这个需求看似简单,要满足却是非常的困难,但是在 TiDB 4.0,我们终于可以很自豪的说,离彻底搞定这个需求更接近了一步,因为我们提供一套完备的 Hybrid transaction/analytical processing (HTAP) 解决方案,那就是 TiDB + TiFlash

The Overview of TiDB 4.0

简单来说,我们会在 TiDB 里面处理 OLTP 类型业务,在 TiFlash 里面处理 OLAP 类型业务,相比于传统的 ETL 方案,或者其他的 HTAP 解决方案,我们做了更多:

  1. 实时的强一致性。在 TiDB 里面更新的数据会实时的同步到 TiFlash,保证 TiFlash 在处理的时候一定能读取到最新的数据

  2. TiDB 可以智能判断选择行存或者列存,以应对各种不同的查询场景,无需用户干预

让系统更有可观测性

「我只是想知道哪里出了问题,为啥还需要了解 TiDB 原理?」——来自某用户的呐喊。

在 TiDB 4.0 之前,如何高效的排查系统出现的问题,其实算一件不算容易的事情。DBA 同学需要了解 TiDB 基本的架构,甚至还需要比较熟悉上千个 TiDB 监控指标,而且还得实战积累一些经验,才能保证下次在遇到问题的时候比较能高效地解决。为了解决这个问题,我们在 4.0 提供了内置的 Dashboard ,我们希望大部分问题,都能通过 Dashboard 方便地定位。

The Overview of TiDB 4.0

我们一直相信**「一图胜千言」**,很多问题通过可视化的方式就能直接地观测到。在 Dashboard 里面,我们提供了:

  1. 热点可视化(KeyViz),能让我们非常直观的看到一段时间 workload 访问数据的分布情况,能让我们快速诊断出系统是否有读写热点等异常。

  2. SQL 语句分析,能让我们快速地知道到底是哪些 SQL 占用了系统太多的资源。

  3. 集群诊断,能自动地分析集群现阶段的状态,给出诊断报告,告诉用户潜在的风险。

百 TB+ 集群快速备份恢复

虽然 TiDB 默认使用三副本来保障数据高可用,但很多用户,尤其是在金融、证券等行业的用户,非常希望能定期的将数据进行定期备份。在早期 TiDB 集群规模小的时候,我们还可以使用传统的备份工具进行备份,但是当集群数据到了几十 TB 甚至百 TB 规模的时候,我们就需要考虑另外的方式了。

在 TiDB 4.0 里面,我们提供了一个分布式备份工具 BR(Backup&Restore),它直接对 TiDB 进行分布式备份,并将数据存放到用户的共享存储,或者云上 S3 等地方。可以这么说,集群规模越大,分布式效果越好,BR 备份就越快。在我们内部的测试中BR 能提供 1GB/s 的备份和恢复速度

我们不光提供了集群全量备份工具 BR,也同时提供了增量数据变更同步工具 CDC(Change Data Capture),CDC 也是直接对 TiDB 的数据变更进行订阅,可以提供秒级别、最快毫秒级别的增量数据变更交付能力。

当然,不光只有 BR 和 CDC,TiDB 4.0 给用户提供了完整的一套生态工具,无论是上面提到的部署运维工具 TiUP,还有数据迁移工具 DM(Data Migration),数据导入工具 TiDB Lightning 等。通过这些工具,我们能方便地将 TiDB 与用户的其他生态系统整合到一起,给用户提供更多高价值服务。

你好!Serverless TiDB

我们一直希望,让用户无感知的使用 TiDB,他只需要关注自己的业务就可以了。TiDB 对于用户来说就是一种数据库资源,他可以按需去使用。这个其实就是在云服务领域非常重要的一个理念:Serverless。

在 TiDB 4.0 之前,用户为了保证 TiDB 集群能抗住业务高峰请求,会在一开始就规划好整个集群规模,但大多数时候,这些资源是处于利用率不高状态的。但在 4.0 里面,基于 Kubernetes,我们实现了弹性调度机制,真正让 TiDB 在云上成为了一个 Serverless 架构。

现在,用户只需要使用最小规模集群部署 TiDB 集群,然后 TiDB 会根据用户自身的业务负载,自动做一些事情,包括:

  1. 弹性的扩缩容,当业务高峰来临,TiDB 会自动增加实例,满足业务请求,反之也能自动收缩实例。

  2. 自动分散读负载高的热点区域。

  3. 热点隔离,将热点业务数据移动到单独的实例上面,保证不影响其他业务。

听起来是不是很酷?我们只需要先用很低的成本来启动 TiDB 集群,后面的成本会随着业务自动的进行弹性处理,也就是俗称的“按需付费”。而这一切,都可以在即将推出的 TiDB DBaaS 云平台上面去直接体验

写在最后

上面只是列举了一些 4.0 的特性,当然还有很多特性没有在这里一一介绍,大家可以慢慢地体验,TiDB 4.0 RC Release Notes

另外,这里放上一个简单的跑分,让大家快速感受一下 TiDB 4.0 的性能提升:

TPC-C (注:测试使用 TiDB DBaaS(AWS) 高配置集群,其中 TiDB 使用 2 台 16核 32G 的 c5.4xlarge 实例,TiKV 使用 3 台 16核 122G 的 i3.4xlarge 实例)

The Overview of TiDB 4.0

TPC-H 10G (注:TPC-H 单位是秒,数值越小,性能越好,测试 TiDB 使用 2 台 16 核 32G 的 c5.4xlarge 实例,TiKV 使用 3 台 16 核 122G 的 i3.4xlarge 实例)

The Overview of TiDB 4.0

Sysbench 16 table, 10000000 table size (注:测试使用 3 台 16 核 62G 虚拟机部署 3 * TiKV,1 台 40 核 189G 服务器部署 1 * TiDB)

The Overview of TiDB 4.0

我们相信,TiDB 4.0 是一个会让大家非常兴奋的版本,也是 TiDB 走在「未来的数据库」道路上面一个坚固的里程碑。当然,这个幸福的时刻里面一定少不了支持我们的用户,因为有大家,我们才能走到现在。我们也相信,未来 TiDB 会变得越来越好,能给用户带来更多的价值。

最后欢迎感兴趣的伙伴尝鲜并反馈建议,点击【这里】添加 TiDB Robot(wechat: tidbai) 为好友并回复“新特性”即可进入**「TiDB 4.0 尝鲜群」**交流~

The Overview of TiDB 4.0

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
2个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。 language JavaScript "name": "vuecliversion2", "version": "1.0.0", "desc
光头强的博客 光头强的博客
2个月前
Java面向对象试题
1、 请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。 创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现 接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿 吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
小森森 小森森
2个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本 欢迎添加左边的微信一起探讨!项目地址:](https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n) \2. Bug修复更新日历 2. 情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意), \ \ 和 注意
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Easter79 Easter79
1年前
TiDB 的现在和未来
> 本文根据黄东旭在 PingCAP D 轮融资线上发布会的演讲实录进行整理。 ![](https://oscimg.oschina.net/oscnet/up-ceee1b1ad10e2bcde45dbe1cc00dc0688fc.png) TiDB 的现在和未来 ----------- 大家好,我是黄东旭,是 PingCAP 的联合创始人和 CTO
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue