OBCE二战上岸经验:行之所向,莫问远方

2020 年,我第一次接触 OceanBase。当时,大多数人认为,国产数据库都是套壳数据库,我也不例外。

由于当时我所在项目作为试点使用 OceanBase,了解之后我才知道,OceanBase 是一款完全自研的原生分布式数据库,这也让我对国产数据库的看法有所改观。

彼时正值 OceanBase 推出 OBCA 认证免费的活动,于是我借着这个机会,考取了 OBCA 证书,对 OceanBase 有了详细的认知。

2020 年下半年我们开始准备上线 OceanBase 数据库,出于对国产数据库的好奇心,我主动申请参与 OceanBase 的项目。

作为一个 90 后虽然我已经考取了 OCM 认证,但是作为一名 DBA,对于一款数据库的了解越深,往往越能发现自己更多不足。深耕 Oracle 的前辈们积累的一些经验和知识,我需要花费多年才能追赶得上,这对我的压力很大。而 现在能够接触到一款完全自研的国产数据库,并且作为之后工作项目的一个重点,让我能够提前进入赛道,对自己的职业发展更有优势,在产品完善和快速发展的路上,也能够快速学习和成长。

最初入门

在项目初期,我就和 OceanBase 的交付同学一起参与项目建设。刚开始什么都不懂,连分布式的架构都不清楚。后来,我根据官方文档和交付老师做完后保留的文档,在类似测试环境的相关工作中,自己慢慢上手实施,对一些名词及概念越来越熟悉,并在此过程中沉淀出了一些操作笔记。

为了方便沟通,我参加了原厂组织的 OBCP 培训。这让我更进一步理解了 OceanBase 数据库的基本概念和架构体系,还在实际工作中逐步接手并胜任大部分的实施部署工作,也可以独立完成其他工作。

2021 年初,我基本全程参与了 OceanBase 数据库迁移流程,包括数据库设计、兼容性测试、环境搭建实施、回放测试、对象和数据迁移等。

这时候 OBCP 开放了一些名额,有前期经验作为基础,我顺利考取了 OBCP 认证。当时 OBCP 还没有上机考试,考的理论知识点大部分我都熟悉,没有悬念就通过了考试。

沙场折戟

顺利通过 OBCP 认证让我有点飘了,因此我十分期待 OBCE 考试。2021 年 6 月,OceanBase 开放了 OBCE 认证,首期放出 10 个免费名额,我有幸抢到了北京考场的一个名额。

当时 OceanBase 官网还没有更新 OBCE 教材,我自认为能力不错,在备考期间就有些懈怠。7 月 28 日,我去北京参加 OBCE 考试。

OBCE 考试共计 8 小时,上午的环境部署比较顺利,但是后面的一些题目,比如弱读的配置、主备的搭建切换等题目,由于我自身运维经验不足,逐渐有些力不从心,尤其是有些报错要处理的时候大脑就空白了。

从考场出来后我还抱着一丝侥幸,心想也有可能就给过了呢。几个工作日之后,不及格的成绩出来,我既失落也高兴。失落的是考试没过,高兴的是 OBCE 考试真的很严格、很公平,不会因为第一次开放考试就放宽标准。

学习沉淀

之后的两年里,我们公司的项目接连应用 OceanBase 数据库。在此期间,我有过连熬两周通宵的痛苦,也有一个个系统平稳上线后的喜悦。同时,我不断反复翻阅官方文档,遇到问题及时跟现场的交付同学请教,在处理问题提工单时从研发老师那里获取问题解决方式及知识原理。而这些经历也让我在环境实施、故障处理、优化分析、主备搭建、参数调整等方面的工作越来越得心应手。

2022 年,我得到了公司发放的一张考试券。有了上次考场折戟的经历,我认真对待这次的 OBCE 考试,把它当成了一座需要攀登的高峰,而我还有很长的路要走。因此,我迟迟没有再去尝试考试,计划先做好手里的工作,在实践中不断成长。

水到渠成

2023 年年中,我们的项目已经全面升级,我们工作的重点也慢慢从实施交付转移到运维管理。这时候公司催我去考 OBCE,因为再不去考,考券要过期了。虽然我仍然认为自己能力不够,但最终还是下定决心 8 月去考 OBCE。

有了一次考试的经验,我明白 OBCE 考试考的不光是知识点的深度,更是 OceanBase 数据库相关知识的广度。作为 DBA,我深知有许多同行像我一样,往往熟悉自己擅长的一类工作,对数据库产品缺乏全面的了解,这是我们的不足之处。

6 月份,我就开始部署环境做一些练习,并且沉下心重新梳理官方文档和官网的 OBCE 培训教材,一步步练习,从集群搭建、OBProxy 部署、租户创建,到参数设置、扩缩容、日志分析、TCPdump、SQL 优化、主备搭建切换等。我把官网上能找到的以及我能想到的内容一遍遍练习,不懂的地方就去社区等地方寻求帮助,争取把所有的知识都嚼烂,所有的操作都了然于心。

到了杭州之后,我和另外一个考 OBCE 的同事碰头,再次梳理了官方文档的大纲。我发现,这些内容我都准备得很充分了,当晚我睡得特别踏实!

8 月 12 日,我正式参加 OBCE 的上机考试。打开考试题目,先大概浏览了一遍,心也慢慢落了地。因为这次准备得很充分,考点都在我的“射程”之内。安装部署、高可用配置、扩缩容、调优、TCPdump分析问题、链路管理、内存管理、数据迁移等,我按照顺序依次答题,感觉到越来越心安,最终提前一个半小时交卷,走出考场。两天后,我得到笔试成绩:通过!

紧接着开始马不停蹄约考 OBCE 面试。期间也很感谢我的同事帮我分担了很多工作,让我能够安心准备考试。

我把 OceanBase 的官方文档( 3.2.3 版本、 3.2.4版本、4.2版本的文档和 OBCE 的培训教材)翻了三四遍,尽量不漏掉一个细节。通过对比版本变化,理解其中的原理知识。对于有疑问的地方找环境去测试,或者找人去咨询。

OBCE 的定位比较高,主要面向数据库架构师以及运维专家,所以难度较大,只熟读官方文档的知识不一定可以达到相应的深度,因此 在备考过程中一定要有探索精神,多去想为什么,并想清楚为什么。

比如:行列混存编码是怎么实现的;SSTAB 的宏块和微块大小是多少,是否可以调整;数据空洞是怎么产生的……这些问题都需要对 OceanBase 数据库各个方面的知识有理解和思考。有好多研发同学也在 OceanBase 官网博客和论坛给大家不断分享相应的原理和交付案例,大家可以多去学习。

9 月 20 日,我参加了 OBCE 的面试。除了对多版本合并消除的知识点产生了理解偏差外,考官的其他问题我都根据自己的理解进行了相应解答。涉及内存模块、优化器的分布式计划、多层合并、备份策略、备集群切换、数据库设计中的网络设计、迁移、备份恢复、副本同步、SQL 诊断、整体流程思路等问题。

答辩之后,我舒了一口气。一是因为答辩很顺利,二是因为备考 OBCE 也验证了我这两年的成长,是我对自己的一个交代。

两天后考试成绩出来:通过!

备考总结

永远用 100 分的态度去对待 60 分的考试。当然 OBCE 难度更高,是 80 分通过。

对于问题要有刨根问底的态度,这对个人成长和对数据库的理解有很大的帮助。

多看官方文档,官方文档是 OceanBase 的精华描述,基本可以覆盖每个知识点和细节,对于原理了如指掌,那相应的操作才能如臂使指。

有条件的同学一定要多操作多练习,我一直相信,每一个遇到的问题,都是成长的一个台阶,每个问题的产生和解决都能帮助你更深入地学习和理解原理。OceanBase 社区有问答论坛、技术博客等,千万别怕遇到问题,有问题去解决就好。

真诚地建议大家,一定不要像我这样去裸考(我是因为本职工作占有优势,属于特殊情况)。 有机会一定要参加 OBCE 的培训,会帮助大家更好地理解 OceanBase 的技术细节和底层原理,更重要的是 OBCE 培训会对数据库架构、应用架构设计等进行讲解, 这可以为我们成功实施一个完整的数据库升级项目打下基础。

我因为疫情错过了参加 OBCE 培训的机会,用三年的生产经验和项目上的摸爬滚打才走通这条路,我知道这是我的必经之路,但是希望大家能少走弯路。

行之所向,莫问远方。当你不知道方向的时候,不妨先去做,有时当你抬头时,会发现你已经到了山顶。