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 培训的机会,用三年的生产经验和项目上的摸爬滚打才走通这条路,我知道这是我的必经之路,但是希望大家能少走弯路。
行之所向,莫问远方。当你不知道方向的时候,不妨先去做,有时当你抬头时,会发现你已经到了山顶。