本文以 OceanBase 生态伙伴的角色角度来总结分享 OceanBase 数据库认证大师(OBCE)的学习、培训和考试经验,供同行和 OB 客户 DBA 参考。
相比两年前,OB V3 版本已经发展到 3.2.4 ,ORACLE 租户对 ORACLE 的兼容性、租户内存的转储、大事务的支持、OB 主备集群复制功能都非常丰富和实用。OB V4 版本也推出了第一个 LTS 版本 4.2.1 。V4 相比 V3 重构了 Clog 复制机制,大大降低了 OB 运行对资源的消耗,间接提升了小内存规格下 OB 的性能。V4 也支持租户级别的备份、租户级别的合并。SQL 引擎方面实用更多向量技术,在复杂查询场景下 SQL 性能又进一步提升。V4 版本的改进点非常多,这里只是列举个人比较关注的技术点。
OB 的官网文档也比 V2 版本时更加丰富,学习中心也有多本 OB 电子书,加上社区论坛、钉钉群。现在 OB 的学习资料太多,可能会带来另外一种“无从下手”的感受。在实际深入运维 OB 碰到问题的时候,可能就感觉到这些资料有点力不从心。此时 OB 官网的认证培训就显得很有用。其中 OBCE 认证资料、培训和考试 可以说是原厂准备的最用心、最实用、最接地气的。
OBCE 培训资料
OBCE 认证官网入口: https://www.oceanbase.com/training/detail?level=OBCE 。上面提供了 OB 运维的 8 个章节的资料和一个实验指导手册。尽管 OBCE 培训是收费的,但是培训的资料原厂官网是提供免费下载。实际培训时的资料可能有些细节变化,也是讲师根据实际 OB 客户经验总结做了一些调整,大部分内容是一样的,并且都跟实际运维工作密切相关。
下面是个人对这些章节内容的总结。
- 《OceanBase 数据库架构设计》,介绍 OB 的架构原理(跟 ORACLE、DB2 等传统数据库架构的区别)、多机房部署模式(多个客户案例,总有适合你的一款)、OB集群资源评估(新业务或老业务迁移到 OB 集群如何评估资源,包括服务器配置和数量、网络带宽等)、OCP 多机房主备架构(运维工具也要多机房高可用)。这些原理都非常适用,近期的案例比如说 金融电子化宣传的深圳农商行躲避台风的容灾案例《 [深圳农商银行基于OceanBase的两地三中心落地及生产容灾切换实践]( https://mp.weixin.qq.com/s/2U80ZDQtqJsECSRAm-seGg) 》。
- 《OceanBase 应用架构》,介绍 OB 的应用在网络容灾方面的设计以及 OB 的分区、多租户和单元化建设方面的原理。在 DBA 眼里,数据库(ORACLE、DB2 、OB等)就是全部,在运维部甚至科技部领导眼里,数据库只是其中一环,OB 数据库项目的上线要从更大范围进行准备。这其中网络规划是第一步,也是最重要的。这里面很多都是传统网络运维的范畴,过去的建设经验都大部分都是适用的。当然由于 OB 数据库出色的多活能力以及可以任意的在线机房级别切换能力,传统的网络规划应该能发挥出更大的价值(比如说真实的同城双机房双活能力、两地三中心多活能力等)。这其中支付宝和网商银行基于 OB 构建的单元化能力就是多城市多机房多活能力的最大体现(当然这并不仅仅是靠 OB 产品的能力,还有 SOFA 产品)。后者这个在早期 OB 客户里也有使用。比如说建行、四川农信。业务体量大是一方面原因,规避风险也是一方面原因(业务数据分散到多个OB集群的多个租户里)。这些案例多是金融行业案例。原理在这一章介绍会非常详细。对于非金融客户或者体量没有那么大的客户,单元化方案是没必要的,仅仅依靠 OB 实现的两地三中心双活、三地五中心多活已经足够满足业务需求。
- 《OceanBase 内存管理》,介绍 OB 内存模块划分、转储原理以及常见内存相关报错的原理、分析方法等。初次接触 OB 的用户大部分都碰到过写入内存报错的问题,这个估计劝退了不少想试用 OB 的客户。OB 的内存使用只是跟 ORACLE 方式不太一样,也是有规律的,可以掌控的。从 OB V3 支持租户转储到 V4 支持租户合并、大事务,OB 产品在内存使用这块的体验也比以前有很大改进。
- 《从应用到数据库全链路优化》,从真实案例出发介绍 应用请求到 OB 再返回的整个链路上多个环节的分析、优化方法。在金融场景里,交易对延时有硬性要求,超时就要报错,所以数据库换到 OB 后, 如果没有做调优,交易的延时很可能要超过传统数据库上的延时,其中业务请求在多个 OB 节点之间的跳转是延时增加的主要原因。这是分布式数据库架构决定,其他分布式数据库也有类似问题。掌握原理后还是可以针对性的调优。如在 OBProxy、OBServer 、网络上以及 业务事务 SQL 上都可以调优。当 OB 上线后稳定运行之后,没有多少日常工作。平时数据库性能优化要用到的知识一半在这一章。
- 《OceanBase 数据库 SQL 优化》,介绍 OceanBase SQL 引擎原理。包括 CBO、执行计划、统计信息等。大部分原理跟传统数据库是想通的,分布式架构会在执行计划上有一些独特的地方。如远程执行计划、分布式执行计划、并行执行。由于这个主题内容非常庞大,这一章也只是介绍其中一部分跟运维工作有关的。更详细的内容还是要看 OB 官网文档。
- 《OceanBase 数据迁移》,介绍业务数据从传统数据库迁移到 OceanBase 的实践经验,对类似项目有很大参考意义。此外就是具体迁移工具和技术的介绍,这一块主要靠 OMS 产品,此外就是 DataX。OB 生态里做迁移的类似产品有 DSG 。实际数据迁移项目有很多繁琐的工作要做,比如说表结构的确认(要符合增量同步的要求:有主键或唯一键等)、触发器和序列的迁移逻辑、存储过程和函数的迁移等等。
- 《OceanBase 高可用》,介绍 OB 的高可用原理、OBProxy 的故障探测机制、OB 的备份恢复以及 OB 主备集群的同步模式(参照 ORACLE DATAGUARD )。这一章主要就是介绍 OB 运维中各种“倒霉”的场景以及应对方案。DBA 需要掌握。
- 《OceanBase 运维监控》,介绍 基于 OB 能做到一些监控,以及 OCP 一些基础监控、SQL监控原理等。主要是介绍原理,实际运维监控就靠 OCP 。OCP 里性能采集和监控指标也非常多,这一章只是提到典型的几个(如死锁)。详细的可以参考官网中 OCP 文档。
- 《OBCE实验指导手册_V3》,这一块是针对前面 8章里大部分内容设计的实验。这些实验在 实验环境满足前提要求的情况下,大概率都是能成功。 OB 学习最大的难关包括 安装部署成功、测试验证(难在不知道如何去测试其原理)。这个指导手册可以说非常用心,近乎“手把手教你做实验体验 OB原理”。在后面的 OBCE 考试机考部分,大部分题都在实验指导手册提到。
OBCE 实验手册
OBCE 实验手册实在太实用了,所以还是要多说一些。
前面说过 OB 学习的第一道关就是安装部署。如果机器资源充足,按照官网文档部署 OCP 和 OB 大概率也能成功。对于大部分的用户难就难在没有这么高配置的服务器。稍低一点配置的服务器部署 OB ,需要调整一些参数才行。而调优又需要懂 OB 原理。所以,OB 实验手册里对这些参数给出了具体的建议,这点是很有用的。
OB 官网的在线实验是使用阿里云 ECS 构建的实验环境。其中 OB 服务器的配置是 16G 内存, OCP 服务器的配置是 64G 内存。这个内存还是相对比较充足,按照实验手册来部署 OCP 和 OB 还是会成功的。OB 培训团队为了学员将精力集中在 OB 和 OBProxy 产品原理的实验上,省略了 OCP 的部署过程(实验环境 OCP 的ECS 带了OCP ,初始化环节即有 OCP 可用)。有关 OCP 的部署在 OBCP 认证考试里做过,这也是一个原因。
在线实验环境需要购买阿里云实验点数。如果报名了 OBCE,就会自动充值实验点数。每个实验都有时间要求,短的一个小时,长的4个小时。建议先在自己环境里熟悉相关实验步骤,再到实验环境操作。这样时间是够用的。自己环境并不一定需要这么高的内存。只要熟悉了相关参数原理,16G 内存的虚拟机可以用来部署 OCP,10G内存的虚拟机可以用来部署 OB 。只不过产品 OAT对部署服务器的配置有硬性要求,就用不上了,改为手动部署。
OB 学习的第二道关就是不知道如何去研究这个 OB 集群。所以实验设计了很多场景,对熟悉 OB 集群原理和运维工作很有帮助。
OBCE 实验里并没有要求手动部署 OB 集群。个人认为手动部署 OB 集群是 OBDBA 的必备技能之一,一个有助于理解 OB 集群的原理(bootstrap、租户、扩容等)。OCP 是帮助 DBA 管理 OB 集群的,但不能太过依赖 OCP。掌握手动部署OB 集群,这样 OCP 部署 OB 的时候如果任务报错,就可以手动处理(比如说绕过内存资源小的时候 OB 部署失败问题)。
由于 OBCE 机考的大部分内容都会在实验手册里体现,所以建议反复练习 OBCE 实验手册里的实验,这样 OBCE 机考高分通过的概率也是很高的。
有关 OBCE 实验操作的总结见文末参考。
OBCE 线下培训
OBCE 培训资料里都是干货,形式是 PPT,传递的信息有限。懂的人看了更懂,初学者看了不一定容易理解其用意。所以 OBCE 的原厂培训还是很有用的。讲师有很多观点想法没办法在 PPT 里体现出来,在面授的时候就能讲出来。
OBCE 的培训讲师是来自于OB 原厂交付团队的资深数据库专家,讲师本身也是来自传统数据库(ORACLE 和 DB2)的数据库专家,所以在传统数据库到 OB 数据库的转换上能跟 传统企业 DBA 做到很好的交流、给出更贴切实际的建议。
OBCE 讲师培训的内容也有一部分是基于 OB 客户项目的总结,所以可能每一期培训都能介绍一些最新的实践经验。
OBCE 认证的内容都是跟实际运维密切相关的,适合企业用户,原厂在这块投入也很大,力求达到较好的培训效果。OBCE 培训采取的是集中训练,时间是一周(5天),每天 8小时(包括午休)。由于内容干货比较多,理解吸收还是要一定精力的。带着工作参加培训,可能会忽视讲师讲的一些要点。
OBCE 培训的内容适用于 OceanBase V3 版本,包括企业版和社区版。即使是在 OceanBase V4 版本里,培训的大部分原理都适用。对于 V4 版本发生变化的部分,讲师也会提到。
OBCE 认证和培训是分开收费的。OB 官方公众号有时候会有一些运营活动提供 OBCE 认证优惠券等,可以关注看看。OB 的企业客户也可以试试商务上争取一些认证和培训优惠券。
OBCE 考试
OBCE 考试分两次,一次机考,是线下,杭州有一个考点。一次面试,在线钉钉视频会议。每个考试每个月只有一次,尽量提前一个月预定。
机考时间是 9 小时,从 9:00 到 18:00 ,考场提供午餐、饮水。除了午餐时间外,其他时间不能用手机。 整个过程个人感觉还是比较紧张,比上班要累。据考场人说,有 5个多小时就结束的学员,估计是非常熟练并顺利的。一般 6 小时能做完。如果中间出差错一两次的话还来得及,7-8 小时完成。
机考的内容大部分在实验手册里体现。机考时提供培训资料,以及官网文档的访问(论坛不能访问)。
这里针对可能的问题给一些建议:
1. 考试 跟练习不一样,考试的题目里会明确给出要求,所以操作的时候要严格按照要求来。比如说 每个 ip 的用途、集群的名称、机房的信息、租户资源规格的大小、参数的设置等。
2. OCP 版本是 V3,在部署 OB 的步骤里会有 IO 性能测试步骤,这一步比较耗时(估计要14分钟以上)。可以耐心等待,也可以用一些特殊方法跳过(杀 ob_admin 进程,拿掉 fio 命令。 前提是熟练掌握了这些技巧 以及熟悉 ocp任务失败的处理方法)。正常情况下等待就行,时间也是足够的。
3. 考前先浏览一遍题目。有些题目可以并行操作(统筹计划,跟烧开水故事同理)。比如说 OCP 部署 OB 、OAT 部署 OMS ,OCP 部署 OB 备集群(也有 IO 测试过程)。前面在等待的时候可以将后面能同时做的先做。正常情况下(一切顺利),也用不上这个建议。
4. 准备一些异常情况的应对方案。比如说 OB 集群创建好后发现 机房名称或 region 名称写错了。重搭 OB 集群太过耗时,这些是可以再修改的(OB 里改,并且同步修改 OCP 元数据表)。
OBCE 机考成绩一般考完后 3 天内就出来了。机考通过后面试考试时间只有一个要求就是一年内。
面试的形式主要是问答,时间约 1小时左右,实际会因人而异有波动。内容就是考试大纲(培训材料)里的内容,以及在培训上讲到的知识。很多内容是在机考里体现不出来的。参加过培训,对考纲内容的理解会更深切一些。另外,培训里也有机会跟讲师深入交流经验,增进了解。这些对面试也会有一定帮助。
总结
OBCE 认证资料和培训的内容都非常接近实际运维工作,应该属于大部分 OB 客户常见问题。实际工作中还会有些是培训没有提到的,这个时候就看官网文档、社区论坛、OB 钉钉交流群 以及 跟 OB 交付或在线工单的沟通了。也欢迎联系我交流 OB 运维问题和经验(个人微信公众号:obpilot )。
有关 OBCE 实验的分享参考:
- [如何在小内存服务器上玩转 OB 企业版部署](https://mp.weixin.qq.com/s/ylsUfmvDCBnRvj-DXgnU5A)
- [OBCE V3 培训试验:内存管理分享](https://mp.weixin.qq.com/s/rt7oZ68d4tvu0G1i9zSf7A)
- [OBCE V3 培训实验:应用到数据库全链路分析(上)]( https://mp.weixin.qq.com/s/SJPApUTUH4YBwqJMOLHMHA)
- [OBCE V3 培训实验:应用到数据库全链路分析(下)]( https://mp.weixin.qq.com/s/sNQLD1taAHZjShL1BbNlbg )
- [OBCE V3 培训:应用到数据库全链路优化实验部分](https://mp.weixin.qq.com/s/MZWsb487E0GaF3hC-4jBXA)
- [OBCE V3 培训实验:SQL优化之执行计划干预]( https://mp.weixin.qq.com/s/gx6jidDtW2TGavm_5Jighw)
- [OBCE V3 培训实验:OB 主备集群]( https://mp.weixin.qq.com/s/Ec5PPi0MyvTr6uNoH0fFkw )
最后,祝大家考试顺利 😄