我和 TiDB 的故事 | 遇上你是我的缘
作者: h5n1 原文来源:https://tidb.net/blog/05fe8dc1
作为一名一直混迹于传统行业的 oracle DBA(毫无前途) ,开源的数据库接触较多可能也就 MySQL,对于国产数据库的的态度:都是说的好,也就拿开源的改改而已,核心系统估计用的机会不大。
不知道哪一年也不知道下了几场雪,偶尔听过 TiDB 这个数据库都说是比较火开源数据库,估计也就刚刚 2.0 的时候,有 QQ 群小伙伴测试了 tidb 反馈是太慢了,没有想象中好,当时心想可能这辈子不会用到 TiDB 了。
后来的某一天有 TiDB 的人员来公司交流了 TiDB ,算是对 TiDB 有了初步的认识,也渐渐的在朋友圈中了解到了 TiDB 的一些动态,比如像 4.0 中 tiflash 发布等等。直到 2021 年 4 月份的某天接到一个需求咨询,想要把 RDS 生产库中的某些表使用 kafka 同步到一台 MySQL 供部分查询使用,于是就找了一台只有几块 SAS 盘的机器,结果上光数据同步就把 IO 打满了,能否想个其他的方式解决。
当他们找到我的时候我想到了 TiDB,于是接下来的任务他们去找机器而我去研究 TiDB,经过各种腾挪之后终于找到了 5 台机器,但是哥呀,这 5 台机器加起来才 12 块 SAS 盘,跑起来估计还不如 SSD 盘的笔记本性能好呢,没办法资源就这样了,先上了看看吧,为了尽量的能分散 IO,把 2 台跑 tidb 和 pd ,3 台做 tikv,每台 4 块 SAS 盘做 raid0。
就这样在 leader 均衡和 RAID 缓存的加持下,轻松抗住了数同步压力,数据量的规模在 8T 左右,通过主键和唯一键读取的磁盘读在几十 ms 内,但是碰上大数据量的查询后大量磁盘读时就太慢了。
为了学习 TiDB,asktug 是一个必经路径,在 asktug 上提了不少问题,清晰的记得当时为了解决如何在 X86 和 ARM 混合模式下如何设置本地镜像问题 (系统不能连接外网都是下载安装包后上传服务器),傲总 @ hey-hoho 团队熬夜研究了实现方式,并专门写了文章 (https://tidb.net/blog/e92230a3),,再次感谢傲总。
可能是那段时间在 tug 上比较活跃,突然某一天,收到了表妹的微信消息 (终于有美女主动发消息了) 问我愿不愿意尝试下做版主,当时的我又喜又恐,喜的是被一定程度认可了,恐的是万一误人子弟不就丢人了,一番心理斗争后就答应了下来,从此开始跟着 TiDB 的大船远航。
经过一段时间在 tug 的摸爬滚打,不仅提升了知识技能,认识了一些大佬,还享受到了帮小伙伴解决问题的快乐,更感受到了分布式和开源魅力,这一切都源自当初表妹的那个邀请,对于我来说这就是一次转折,很幸运遇到了表妹,感谢表妹。
其实之所以会推荐 TiDB 的一个原因是被官方文档的内容所影响,至少到目前为止相比某里等大厂的文档真的是太丰富了,而且还有很多讲解原理的博客文章,asktug 上也有很多丰富的案例,这在国产数据库中真的可以用罕见来形容,也被这种开放的态度所折服,随着后来对 tidb 的了解越来越多,也开始尝试在 tug 和公司内公众号上写些关于 TiDB 的文章,在给给自己做个笔记的同时也能做些知识传播。(专栏地址:https://tidb.net/u/h5n1/post/all 公司公众号: https://mp.weixin.qq.com/s/56rHLPIAyWAWcEYXeaynTQ ) 。
为了能让公司内的更多的人了解 TiDB,组织了一场内部培训,讲解了 TiDB 的基本架构、关键特点、行业案例等,为了能吸引更多人听,和表妹申请了一些周边作为抽奖礼品,表妹不仅慷慨相助,还做起了模特,很遗憾的是那次培训仅有 78 人参加,没有达到预期。
这一年多来见证了 TiDB 的一次次版本带来提升和变化,也有幸参加了 6.0 book rush 活动,再一次的感受到了社区的活力,祝愿 TiDB 这种真正开源数据库也越来越好。另外也对 TiDB 再提一些建议:
1、 对传统行业的加强
TiDB 目前的主要活跃用户可能在互联网行业较多,在一些传统行业发力不够。另外传统行业中有些安全要求比较多,对于在线镜像文件下载、 PD 等组件的安全性、TiUP 的权限等可能在传统行业遇到些问题。
2、 官方文档内容加强
目前官方文档大部分内容还是比较详细的,但仍有些内容比较缺失,比如监控方面,没有详细的说明、面板内的各项指标也缺乏说明和原理性解释,这方面能够详细描述的话对于问题诊断会更有帮助。
3、 提供一些更精细化的指标
以 SQL 执行计划为例,执行 explain analyze 后 TiDB 的每个算子能够展示该算子的具体信息比如 actRowS、过滤谓词、cop task 时间、内存消耗等,大部分情况下还是能够很容易发现问题,但也有很多时候 SQL 执行时间比较长,但根据执行计划或 dashboard 看相关算子和执行时间没有什么问他,而监控有 30 分钟的粒度整体也没有什么问题,导致不能快速和清晰的定位问题所在,如果能降执行过程进一步按阶段细化,比如类似 oracle 的等待事件,则能快速分析问题,降低很多人的门槛。
是她,就是她!
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/e4fbb703ff9c164d42d77f0b9】。文章转载请联系作者。
评论