话说,osyun平台从开发TiDB到实现部署集群自动化功能,历经了2个月左右,期间还是有一些辛酸泪的~
今天我们来看看新建TiDB集群的osyun平台的实现,有神马不容易~
-1761641616447.png)
先看新建TiDB集群的流程,工单方式,分为4步:
- 用户申请工单
- 审批流程
- 自动化确认流程
- 自动化执行流程
实现的核心点呢,就是利用tiup工具去实现自动化部署,详细流程如下:

-1761641530961.png)
TiDB数据库最让人感觉暖心的就是tiup工具了,无需疑惑,无需纠结,它就是运维TiDB集群的核心!
那么做数据库管理平台,就是围绕tiup去做了,包括部署集群,扩缩容节点、启停节点、销毁集群等等
-1761641724445.png)
知道了选择什么工具,剩下就是元信息设计了,TiDB有集群概念,多角色、多端口的特点,那么设计上就是如下几点核心了:
- 集群
- 实例
- 库
- 域名
- VIP
- 套餐
- 存储
- 版本
- tiup配置
当前osyun平台的tidb的元信息表有93张,都是围绕这些方向去建立的
-1761641769011.png)
回看TiDB从2.x版本到当前的8.x版本,添加了很多很多参数,例如:numa、资源管控的参数等等,产品化呢需要支持客户去指定,又要有一定的默认规则,这个是有点小难度的。
在之前公司上班时候的做法,是将这些默认规则写入到脚本里,不会放到平台界面处去实现,这样简单高效。
但是,做产品不能这样,必须灵活支持多种定制,需要支持用户的指定参数,又要支持一定的默认,且都要在平台上能选择。
所以,在部署TiDB集群的设计上,我们也参考了TEM平台,毕竟站在巨人的肩膀,我们也能看的远一些,此处感谢TEM的开发小伙伴~当然设计与实现思路是不同的
-1761641784041.png)
跟MySQL截然不同的是,TiDB有多种角色:TiDB、PD、TiKV、TiFlash、Prometheus、Grafana,到后来又添加的TiProxy,这种设计是有好有坏的。
好处呢,是角色分的很清晰,每种角色做自己的事情。
其实不算坏处,只是需要适应这种特殊性:
- 设计上:每种角色有自己独立的参数,例如端口、标签等,都需要在设计上做考量
- 让元信息的表数量膨胀了几倍
- 让平台界面也膨胀了些
- 让自动化脚本的参数也膨胀了些
总之,我们需要根据TiDB的多角色特点做适配,才能让集群的管理更丝滑
-1761641804878.png)
TiDB是多版本的,且发版比较快,好在tiup都能支持,当然4.x版本之前是不行的了!
当前osyun平台部署的都是8.5.1版本,新版本发布后,只要让tiup支持,再在平台上维护下版本信息,就可以部署新的版本了
-1761641818439.png)
osyun平台有个特点,就是工单化,申请TiDB集群,需要先申请新建集群的工单,选择最少的信息,提交后,审批通过,DBA在自动化确认界面,去确认详细的集群参数。
这样设计的好处是:申请集群很轻松,也无需关心端口等细节,因为申请的多数是开发同学,做简单的申请,他们应该会很开心。
懂得各种参数的是DBA同学,在自动化确认界面,详细的参数需要确认,确认好后就可以进行自动化执行了。
这样的设计让专业的人做专业的事情,申请简单~
申请界面如下:

输入集群基本信息

库配置

TiDB资源

TiDB机房

PD资源

PD机房

TiKV资源

TiKV机房

支持TiFlash可选部署,选择是,则进行部署

Tiflash机房

账号

人员

确认后提交工单即可,很简单有没有~
想看部署视频案例的,可以查看公众号文章:https://mp.weixin.qq.com/s/PMYRKFf11k8oqvXaOg70Uw
可以关注公众号:

如果有咨询,可以添加微信:
