【DBA100人】台枫:DBA不仅要懂运维还得懂代码
The following article is from OceanBase数据库星球 Author OceanBase
「DBA 100人」专访计划是OceanBase围绕资深DBA(数据库管理员:Database Administrator)进行的人物专访活动,旨在通过人物故事、职业发展经历以及日常工作中遇到的技术难题和实践案例,未来对技术趋势的想法,希望他们的成长之道能够给到各行业 DBA 一些建议和思考。
《DBA 100人》第3期带你了解携程数据库高级工程师台枫——OceanBase OBCP 认证专家,业余时间在社区中撰写过多篇 OceanBase 技术文档广受欢迎,希望他的 DBA 成长史能给你带来参考价值。
2020 年 7 月,当很多刚跨出校门的大学生毕业生还在为自己的工作发愁时,台枫已经顺利通过实习期,成为携程的一名数据库管理员。台枫大学毕业的 2020 年,大学生毕业人数突破新高,达到 874 万人,大学生就业成为当年社会性话题。
台枫是 7 年前考上上海大学的,并开始进入学校的计算机科学与技术专业学习。进入大学四年级的时候,台枫就已经修完所有必须学的课程和学分,只剩下毕业论文了,这让他有充足的时间实习和找工作。2019 年 8 月台枫加入携程集团数据库团队,成为一名实习生。实习期表现优秀,得到公司认可,于 2020 年 7 月转正,正式开启了他的 DBA 之旅。
成为 DBA 并不在台枫的规划之中。 在成为DBA 之前,他对于 DBA 的职责也只有一个相对模糊的概念,对数据库产品的认知也就停留在数据库的基础知识,知道有 MySQL、SQL Server、Oracle 存在。好在他就读的上海大学计算机专业比较注重学生的基础知识教育,扎实的计算机知识使得他很快就能适应这一职位。
台枫从小就喜欢玩游戏、玩电脑,很早就接触计算机,对计算机很有兴趣,曾代表上海参加全国青少年信息学奥林匹克联赛(NOIP),拿过不错的联赛名次。这也是他后来选择计算机专业的原因。不过,计算机专业并非台枫的第一志愿,他的第一志愿其实是数学,当年上海大学数学专业录取分数更高,他才进入计算机学院。
虽然没有进入理想的数学专业,但他并没有感觉遗憾。“最终结果应该都差不多,因为数学专业毕业后,我大概率还是会进入计算机行业的。”台枫笑着说。
携程数据库团队负责全集团多种数据库产品运营,包括 MySQL、Redis 、TiDB、OceanBase、MongoDB、Hbase、SQL Server 等,涉及上万个实例。这些都是携程最为核心的资产,为了维护它们,携程建立了一支超过 30 人的高水平 DBA 团队,团队中也不乏各种出书立说的数据库大牛级人物。
台枫进入携程的时候,公司已经建立了一套相对成熟的管理流程,大部分运维工作都已经实现自动化和流程化。数据库的日常运维只是占 DBA 的一小部分,DBA 更多的时间用在运维工具的研发和能力提高上。能接触数据库底层的技术,能把大学里学的知识和实际结合起来,这让台枫非常兴奋。
进入携程成为一名 DBA 实习生,台枫很快就适应了新的身份,并迅速喜欢上了这份工作。
“印象特别深的是,在刚开始实习的时候,公司要把 MySQL 从 5.6 升 5.7,大家一起学 5.7 的新特性 gtid,做 gtid 的实验做到最晚一个下班,当时觉得研究这类东西挺有趣。后来对 MySQL 的理解加深,随后接触到 OceanBase,自己对分布式数据库系统的兴趣也是越来越高。”台枫说。
兴趣是最好的老师。进入携程后,台枫成长很快,先后取得了 OceanBase OBCP 认证证书、TiDB PCTP 认证证书,还曾在社区中撰写过多篇 OceanBase 技术文档。今天的台枫已经是携程数据库高级工程师,成为了能独当一面的 DBA 了。
携程的业务系统最早是建立在 SQL Server 数据库之上的,采用 SQL Server 和小机的传统架构。随着业务的快速成长,数据量呈现出爆炸性增长,数据类型也不断增加,数据库类型也不断丰富。与此同时,SQL Server + 小机这种传统架构的高成本和灵活性不足的问题开始显露出来。
2010 年以后当中国的互联网企业纷纷开始走上“去 IOE”之路,携程也在去 SQL Server 和小机。台枫 2019 年进入携程开始实习的时候,携程去 SQL Server 已经接近尾声,原来在 SQL Server 运行的业务绝大部分都已经迁移到 MySQL 上。
随着携程开始广泛使用 MySQL,MySQL 的不足逐步显现。一个突出问题是,MySQL 作为一种集中式数据库,扩展性先天不足,扩容比较麻烦,而且成本也比较高。为了解决这问题需要采用分片(Sharding)和中间件,实现复杂,技术门槛高,还需要开发端的支持。台枫就经历过几次扩容,每次都小心翼翼生怕出错,最后弄得精疲力竭。
另一个问题是 MySQL 集群脑裂的风险。这个风险让携程非常紧张,如果真的有一天网络出现故障,集群分裂为几个相互无法通信的小集群,数据就会出现不一致,需要 DBA 来人工修复校验数据,想想这个工作量就让人头疼。
分布式数据库的异军突起让携程看到了解决问题的希望。分布式数据库就是为解决高可扩展、高可用性而生,如果将 MySQL 换成分布式数据库,携程最为关心的两个问题能轻松地得到解决。
携程谨慎地决定尝试将一部分线上 MySQL 替换为分布式数据库,这既是对 DBA 团队技术实力的信心,同时也是为了更好地满足业务需求。决策已定,下面的问题就是该选择哪家的分布式数据库?
当下分布式数据库大体有三个技术流派,一个是中间件+传统集中式数据库;一个是原生分布式数据库;还有一类是鉴于两者之间采用共享存储架构的分布式数据库。经过评估,携程将选型范围确定为原生分布式数据库,同时明确这个数据库一定要开源,以方便携程深入了解该数据库后进行相关工具的开发。
经过认真地评估,携程最后选定了 OceanBase。一旦选定,携程的工作节奏非常快。2021 年 6 月 OceanBase 开源后携程才正式开始对 OceanBase 进行全面评估和上手测试,到 7 月份就开始上线一些开发和测试项目,到今年用于生产的 OceanBase 数据库集群已经有 20 多个,覆盖小部分订单、结算业务以及不少非核心业务。
台枫介绍说,从 DBA 的视角看,OceanBase 带来了三大好处:
▍高可用,可防止数据库集群出现脑裂。OceanBase 基于 Paxos 分布式协议很好地解决了这个问题。
▍良好的扩展性,降低 DBA 的工作复杂度。OceanBase 在扩展性上非常优秀,是原生的支持。扩容变成了简单的服务器部署问题,一个命令下去,系统就能自动完成。
▍OceanBase 的高压缩比降低了存储成本。OceanBase 采用了 LSM-Tree 的存储结构,在合并过程中会进行压缩。另外,在底层存储上空间排布很紧密,不会出现空间浪费。
台枫透露,在选定 OceanBase 前,携程其实已经部署了另一家原生分布式数据库,并且有不小的规模。在携程现有架构下,两种分布式数据库的适用场景和定位不同,两者现在处在共存状态。
通过对几家国产分布式数据库的评估,台枫对国产数据库有了相对全面的认识。他认为,国产分布式数据库整体表现出了非常高的技术水平,他看好国产分布式数据库的未来。
“当下国家在政策层面积极引导,国产数据库百花齐放,竞争激烈,技术迭代很快,表现除了很强的创新力,这些为国产数据库市场的繁荣奠定了很好的基础。”台枫说。
台枫认为分布式数据库会是行业趋势。随着数据量的增长和网络性能的进一步改善,分布式数据库的优势会进一步体现出来。同时,台枫也表示,作为数据库的后起之秀,分布式数据库也还有不少工作要做。比如,国产数据库有一个共同的不足是对故障定位不太友好,与 Oracle 等有差距。这些数据库提供了比较丰富的排查工具和各种报表,出现问题后可以迅速定位。
另外,在外围生态上也需快速跟上,这可以大大降低部署和实施的门槛。携程技术实力强,很多工作都可以自己做,比如,为了支持 OceanBase 与 MySQL 数据库的同步,携程自研了一套迁移工具,其中包含业务的兼容性检查、业务模型的性能压测、数据的全量增量同步等等一系列功能;为了捕捉、分析、处理 OceanBase 的组件日志,通过基于 ELK 的日志收集方式,搭建了一套分布式数据库日志中台。这些技术实力显然是一般公司难以匹敌的,对普通企业而言,更大的依靠还是原创。
从 2019 年8月加入携程到现在,台枫做 DBA 的日子并不长。回首这三年的 DBA 时光,台枫还是很欣慰,非常感谢携程数据库团队给予他的帮助,良好的技术氛围也是他得以快速成长的重要原因,特别是在携程并没有陷入日常繁琐的运维工作,可以有更多时间专研技术,也让他在 DBA 的道路上前进得能更快一些。
谈到 DBA 这个职业。台枫说,他对自己的一个基本要求是要做一个能睡得着觉的 DBA。
“我觉得,一个好的 DBA 前提是你要对自己开发的工具和自己运维的数据库有信心。换句话说,就是你晚上你要睡得着觉,不担心出问题。如果你对自己没有信心,就说明你技术不够成熟,还做得不够好。”台枫表示。
当然,这个信心是建立在扎实的技术之上的,而不是盲目自信。因此,他认为 DBA 要深入数据库内核,从原理上找到解决问题的办法。不仅能解决问题,还要能说得清为什么要这样解决。
“DBA 需要时间沉淀,不断碰到问题解决问题,不断成长。同时,DBA 的知识面也要比较广,不能只是关心数据库的事情,操作系统、网络、服务器都需要学习,要有成为一名 SRE 的实力。”台枫说。
台枫特别强调,做 DBA一样沉得住气,要静下心,多看文档,自己动手搭测试环境,不能满足于做好运维,还是具有代码能力,这样才能做得远。
台枫透露,他心里有一个目标,就成为一个像 OceanBase 创始人阳振坤老师这样的人,成为数据库领域的科学家!
往期推荐
▼ 点击“阅读原文”,直达上篇