转载来源:OceanBase数据库星球公众号

引言

2020年7月,当很多刚跨出校门的大学生毕业生还在为自己的工作发愁时,台枫已经顺利通过实习期,成为携程的一名数据库管理员。台枫大学毕业的2020年,大学生毕业人数突破新高,达到874万人,大学生就业成为当年社会性话题。

台枫7年前考上了上海大学,进入计算机科学与技术专业学习。进入大学四年级的时候,台枫就已经修完所有必须学的课程和学分,只剩下毕业论文了,这让他有充足的时间实习和找工作。2019年8月台枫加入携程集团数据库团队,成为一名实习生。实习期表现优秀,得到公司认可,于2020年7月转正,正式开启了他的DBA之旅。

不小心成了一名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带来了三大好处:

1. 高可用,可防止数据库集群出现脑裂。OceanBase基于Paxos分布式协议很好地解决了这个问题。

2. 良好的扩展性,降低DBA的工作复杂度。OceanBase在扩展性上非常优秀,是原生的支持。扩容变成了简单的服务器部署问题,一个命令下去,系统就能自动完成。

3. OceanBase的高压缩比降低了存储成本。OceanBase采用了LSM-Tree的存储结构,在合并过程中会进行压缩。另外,在底层存储上空间排布很紧密,不会出现空间浪费。

台枫透露,在选定OceanBase前,携程其实已经部署了另一家原生分布式数据库,并且有不小的规模。在携程现有架构下,两种分布式数据库的适用场景和定位不同,两者现在处在共存状态。

通过对几家国产分布式数据库的评估,台枫对国产数据库有了相对全面的认识。他认为,国产分布式数据库整体表现出了非常高的技术水平,他看好国产分布式数据库的未来。

“当下国家在政策层面积极引导,国产数据库百花齐放,竞争激烈,技术迭代很快,表现除了很强的创新力,这些为国产数据库市场的繁荣奠定了很好的基础。”台枫说。

台枫认为分布式数据库会是行业趋势。随着数据量的增长和网络性能的进一步改善,分布式数据库的优势会进一步体现出来。同时,台枫也表示,作为数据库的后起之秀,分布式数据库也还有不少工作要做。比如,国产数据库有一个共同的不足是对故障定位不太友好,与Oracle等有差距。这些数据库提供了比较丰富的排查工具和各种报表,出现问题后可以迅速定位。

另外,在外围生态上也需快速跟上,这可以大大降低部署和实施的门槛。携程技术实力强,很多工作都可以自己做,比如,为了支持OceanBase与MySQL数据库的同步,携程自研了一套迁移工具,其中包含业务的兼容性检查、业务模型的性能压测、数据的全量增量同步等等一系列功能;为了捕捉、分析、处理OceanBase的组件日志,通过基于ELK的日志收集方式,搭建了一套分布式数据库日志中台。这些技术实力显然是一般公司难以匹敌的。对普通企业而言,更大的依靠还是原创。

DBA要深入系统核心

从2019年8月加入携程到现在,台枫做DBA的日子并不长。回首这三年的DBA时光,台枫还是很欣慰,非常感谢携程数据库团队给予他的帮助,良好的技术氛围也是他得以快速成长的重要原因,特别是在携程并没有陷入日常繁琐的运维工作,可以有更多时间专研技术,也让他在DBA的道路上前进得能更快一些。

谈到DBA这个职业。台枫说,他对自己的一个基本要求是要做一个能睡得着觉的DBA。

“我觉得,一个好的DBA前提是你要对自己开发的工具和自己运维的数据库有信心。换句话说,就是你晚上你要睡得着觉,不担心出问题。如果你对自己没有信心,就说明你技术不够成熟,还做得不够好。”台枫表示。

当然,这个信心是建立在扎实的技术之上的,而不是盲目自信。因此,他认为DBA要深入数据库内核,从原理上找到解决问题的办法。不仅能解决问题,还要能说得清为什么要这样解决。

“DBA需要时间沉淀,不断碰到问题解决问题,不断成长。同时,DBA的知识面也要比较广,不能只是关心数据库的事情,操作系统、网络、服务器都需要学习,要有成为一名SRE的实力。”台枫说。

台枫特别强调,做DBA一样沉得住气,要静下心,多看文档,自己动手搭测试环境,不能满足于做好运维,还是具有代码能力,这样才能做得远。

台枫透露,他心里有一个目标,就成为一个OceanBase创始人阳振坤这样的人,成为一名数据库领域的科学家。

台枫

携程数据库高级工程师。拥有OceanBase OBCP认证证书、TiDB PCTP认证证书。在社区中撰写过多篇OceanBase技术文档。