一、缘起:Oracle DBA 为什么也要学 TiDB
做了多年 Oracle DBA,我一度觉得自己的职业护城河足够深:RAC 集群、Data Guard、RMAN 备份、AWR 性能分析、SQL 优化那一整套体系,够吃很多年。Oracle 的运维方法论几乎是企业级数据库运维的"标准答案",我也习惯了在这套体系里解决问题。
但这两年的变化,让我不得不重新打量自己的技能树。
最直接的压力来自国产化替代。去 O(去 Oracle)已经从口号变成了一个个真实的项目立项:成本考量是一方面,供应链安全与合规要求是更硬的约束。越来越多系统的数据库选型评审里,Oracle 不再是默认选项,取而代之的是各种国产数据库。作为 DBA,如果你只会 Oracle,未来的舞台只会越来越小。
第二个原因是架构层面的触动。Oracle 的高可用方案——RAC 共享存储、ADG 主备复制——很强,但本质上是"集中式架构下的高可用":RAC 节点再多,存储只有一份;ADG 备库再远,写入只能落在主库。面对海量数据和水平扩展的需求,传统做法是分区表、分库,配合应用层改造,复杂且脆弱。而新一代分布式数据库的思路完全不同:从架构层面原生支持横向扩展,加节点就扩容,对应用透明。
调研之后,我把目标锁定在 TiDB:分布式架构成熟、HTAP 能力完整、社区活跃、文档与认证体系健全。而且它对应用侧兼容 MySQL 协议,迁移生态(DM、TiCDC 等工具链)完善,是去 O 场景里落地案例最多的选择之一。
于是,学习 TiDB 从"了解一下"变成了"必须拿下"。
二、初识 TiDB:Oracle 经验既是财富,也是包袱
刚开始接触 TiDB,我的心态和很多 Oracle 同行一样——"数据库嘛,万变不离其宗"。找个测试环境用 TiUP 把集群拉起来,建库建表跑几条 SQL,觉得不过如此。
这个心态很快就被打破了。Oracle 经验在学习 TiDB 时是典型的"双刃剑":
是财富的部分:SQL 优化思维、执行计划分析、索引设计、事务与锁的理解、备份恢复的严谨性——这些底层功力完全复用,看 TiDB 的慢查询和执行计划时几乎无缝衔接。
是包袱的部分:架构思维要彻底"换脑"。
- Oracle 是集中式共享存储(RAC 多实例共享一份数据文件),TiDB 是Shared-Nothing,数据按 Region 切片分散在多个 TiKV 节点上,每个节点存自己那份;
- Oracle 靠 RAC Cache Fusion 保证多实例间数据一致,TiDB 靠 Raft 协议在 Region 多副本间复制日志达成一致;
- Oracle 的高可用是 ADG 主备切换(出故障要 failover),TiDB 的多副本天然多数派存活即可服务,单个节点挂了集群无感;
- Oracle 的"全局一致性时间"靠 SCN,TiDB 靠 PD 集中分配的 TSO。
第一次意识到这种差异,是在我理解 TiDB 集群角色的时候:
- TiDB Server:无状态 SQL 层,负责连接、解析、编译、执行 SQL,做关系数据与 KV 的转换,承担 Online DDL 和垃圾回收。可以横向堆多个节点,前端挂负载均衡——这在 Oracle 里找不到直接对应物,有点像"一堆只干 SQL 层的 RAC 实例,但不共享任何存储"。
- TiKV:行存引擎,数据以 Region(默认 96MB 左右)为单位分片,每个 Region 多副本,Raft 保证一致性,支持 MVCC 和分布式事务,Coprocessor 负责把计算下推到存储节点。
- PD(Placement Driver):集群大脑——元数据、TSO 全局时间戳、Region 调度与负载均衡。
- TiFlash:列存副本,从 TiKV 异步复制数据,同一集群内实现 HTAP。这一点让我印象很深:相当于在 Oracle 里同时拥有了 OLTP 库和一个实时同步的分析库,却不需要 GoldenGate、不需要 ETL。
扩容体验的对比更直观:Oracle 里要扩容量,要么扩存储、要么做分库改造,伤筋动骨;TiDB 里加一台 TiKV,PD 自动把 Region 调度过去、数据自动均衡,应用完全无感。那一刻我承认,这是架构代差。
三、备考之路:PCTA 打地基,PCTP 练手艺
我的考证顺序是先 PCTA(TiDB 数据库核心原理与架构),再 PCTP(TiDB 数据库管理)。强烈建议按这个顺序:先懂原理再学运维,后面每一步操作都知道自己在干什么。
3.1 PCTA:最难的是把 Oracle 脑换成分布式脑
PCTA 的核心教材是《TiDB 数据库核心原理与架构》。对 Oracle DBA 来说,SQL 层和优化器部分有亲切感,真正的硬骨头全在存储与事务侧:
数据写入与读取流程、分布式事务(Percolator 模型、TSO、两阶段提交)、MVCC 实现、算子下推逻辑、各组件的协作关系。
拿一条 INSERT 举例。在 Oracle 里,写入路径我闭着眼都能画:Server Process 解析执行 → 改 Buffer Cache 中的数据块 → LGWR 写 Redo Log → 提交 → DBWR 异步落盘。而在 TiDB 里,这条路完全变样:
- TiDB Server 解析编译后,把行数据编码成 KV 对;
- 向 PD 申请 TSO 作为事务的开始时间戳;
- 按 Key 范围路由到对应 Region 的 Leader 所在 TiKV;
- 走 Percolator 两阶段提交:先 prewrite(写锁和数据),再 commit(提交 primary key 后事务即算成功,secondary 异步提交);
- 底层每个 Region 的写都要经 Raft 日志复制到多数派才持久。
读路径同样陌生:快照读要结合 MVCC 版本和 TSO,遇到锁要走 resolve 流程,聚合计算尽量通过 Coprocessor 下推到 TiKV 并行执行。
第一遍看视频,每个名词都懂,连起来就断片——尤其是两阶段提交里 primary/secondary key 的关系、锁的清理、冲突时的 resolve 逻辑。我来回倒了三遍才理顺。Oracle 里事务一致性是"实例 + Redo + Undo"的思维,到这里要换成"时间戳 + 多版本 + 分布式锁"的思维,这个转换是整个学习过程最疼、也最值钱的一步。
3.2 我的笨办法:画图法
对付纯理论,我用的是笨但有效的方法——画图法,四步:
- 反复看视频:第一遍建整体印象,第二遍抠细节,弄清每个环节的角色和输入输出;
- 脱稿画流程:合上视频,凭记忆把完整链路画出来——从客户端 SQL 到解析、优化、申请 TSO、路由 Region、两阶段提交、Raft 复制、返回结果,一环不落;
- 对照找差距:和课程内容比对,标出漏的、错的、理解偏的。这一步最暴露问题——你以为懂了,画出来才知道哪里断着;
- 回炉重看:针对断点重学,直到不看任何资料能把整条链路默画出来。
这个方法的本质是用主动回忆代替被动接收。看视频时大脑会骗你"都懂了",只有默画时漏洞才无处遁形。作为辅助,我还画了一张"Oracle 概念 → TiDB 概念"的对照图(SCN→TSO、Redo→Raft Log、Undo→MVCC 多版本、RAC→多 TiDB Server 无状态节点、ADG→多副本+Placement Rules),换脑过程快了很多。
3.3 PCTP:运维这一关,工具链要全部重学
PCTA 考"懂不懂",PCTP 考"会不会"。《TiDB 数据库管理》课程的覆盖面,基本就是一个 DBA 日常清单的 TiDB 版。对 Oracle DBA 来说,这部分最直观的感受是:方法论相通,工具链全换——
- 部署:TiUP 一统天下,集群部署、启停、查看、改配置都走它。习惯了 OUI/DBCA 的人会觉得清爽得多。
- 监控诊断:Prometheus + Grafana + Dashboard 三板斧。以前看 AWR/ASH 报告定位问题,现在看 Grafana 面板和 Dashboard 的 Top SQL、慢查询——分析思路相通,工具手感要重新练。
- 备份恢复:RMAN 的整套概念要映射到 TiDB 体系——BR 做物理备份恢复(类似 RMAN 的全备/恢复),Dumpling 做逻辑导出(类似 exp/expdp),TiDB Lightning 做高速导入(类似 impdp + direct path 的结合体),sync-diff-inspector 做数据校验。热备/温备/冷备的界定、逻辑备与物理备的取舍,这些 Oracle 功底让我理解得很快。
- 数据同步:DM(从 MySQL 全量+增量迁移)和 TiCDC(TiDB 变更数据捕获、向 Kafka/下游同步)。对玩过 GoldenGate 的人来说,TiCDC 的定位一看就懂,但架构原理(TiKV 的 Change Data 捕获、Sorter、Sink)还是要重新学。
- 扩缩容与升级:在线扩容加节点即可;缩容有严格流程,要先调整副本数、保障数据安全再下线。版本升级分停机与在线两种,流程和常见坑都要熟。
- 高可用架构:同城三中心、两地三中心、异步复制方案的对比选型。Oracle 的 ADG 思维在这里要升级成"多数派共识 + Placement Rules 副本放置策略"的思维。
- 参数与权限:参数作用域、两种修改方式;用户/角色/权限体系——这部分和 Oracle 的用户权限模型异曲同工,上手很快。
3.4 我的实办法:五段练习法
PCTP 偏重实践,光看不练等于白学。我把实验分五段:
- 跟做:跟着讲师视频一步步操作,卡住就查官方文档(TiDB 文档质量很高,几乎全覆盖);
- 记笔记:记下关键步骤、命令、参数,脱离视频凭笔记独立做;
- 脱稿独立做:连笔记都不看,独立完成完整流程;
- 对照原理:结合 PCTA 的理论,理解每步操作背后集群在干什么——比如扩容命令执行后 PD 如何调度 Region,BR 备份时如何基于 MVCC 读快照。操作与原理对上号,知识才闭环;
- 主动搞破坏(进阶):在测试环境故意制造故障——kill 掉一个 TiKV 看集群反应,模拟网络分区看 Raft 重新选举,缩容不按流程走看报什么错。记录现象,再一步步排查恢复。
第五段的价值怎么强调都不过分。在安全的测试环境里主动制造问题、解决问题,远比在生产环境凌晨三点被动救火强一百倍。 考试里不少题目,考的正是这些"踩过坑才知道"的细节。
3.5 时间怎么挤出来的
在职备考,时间最大敌人。我的做法是化整为零:
- 工作日午休和晚上各挤一小时看视频、做笔记;
- 实验安排在晚上的整块两小时或周末上午——实验怕打断,碎片时间只配看理论;
- 通勤时间翻自己整理的笔记和流程图,给大脑做"回放";
- 考前两周冲刺:重做核心实验(部署、扩缩容、备份恢复、升级),易错点整理成一页纸清单,考前过两遍。
节奏上,PCTA 大约六周,PCTP 因为实验多用了八周左右。关键不是每天学多久,而是不断档——分布式概念放下一周就生疏。
四、考试经验:几点实战提醒
- 理论题重理解,不重背诵。 PCTA 爱考流程和因果:"某组件故障后集群会怎样""某环节的作用是什么"。流程图在脑子里,题目就是看图说话;靠背概念扛不住。
- 运维题重场景,不重命令。 PCTP 常给你一个场景(迁移、扩容、故障),问该用什么工具、什么流程、注意什么。做过实验、理解工具选型逻辑的人一眼能看出答案。
- 易混点单独整理。 Dumpling vs Lightning vs BR 的适用场景,DM vs TiCDC 的分工,热备/温备/冷备的界定——考前一页纸对比着看,性价比极高。
- 别忽略"为什么"。 为什么缩容前要先调副本数、为什么建议至少两个 TiDB Server 节点、为什么 TiFlash 是异步复制。这些设计权衡既是考点,也是工作中做方案最值钱的东西。
- Oracle 功底别浪费,但也别固执。 SQL 优化、执行计划、事务理解这些内功都能迁移,是我们的加速度;但架构思维上别拿 Oracle 的尺子量 TiDB,越是资深的 Oracle DBA,越要警惕经验主义。
五、收获与思考:证书之外的三个转变
5.1 认证倒逼深度学习
坦白说,没有考证这个目标,课程视频我大概率走马观花看一遍就翻篇。认证给了学习一个明确的终点和验收标准,把"差不多懂了"逼成"必须搞懂"。有时候,一个外部设定的截止日期,比纯粹的内部动机更有效。
5.2 从"集中式高可用"到"分布式原生"
这是认知层面最大的刷新。Oracle 的 RAC + ADG 是集中式架构下做到极致的高可用,但水平扩展始终是软肋。TiDB 让我看到另一条路:Region 自动分裂与迁移、PD 全局调度、加节点数据自动均衡、对应用完全透明——扩展性从架构里长出来,而不是靠应用层改造和中间件堆出来。这种认知升级不只关乎 TiDB,而是刷新了我对"数据库应该是什么样"的整体理解。
5.3 原理是运维的底气
回头看最初"能跑就行"的心态,本质是缺乏原理支撑时的无奈——出了问题不知从何查起,就只剩重启和重装。深入学习之后心态完全不同:知道数据以什么格式存在 TiKV、Raft 如何保证一致、PD 如何调度、SQL 经过哪些解析优化步骤……这些知识构成故障排查的"地图"。
原理不是理论,是运维工程师凌晨三点处理故障时的底气。 这一点,Oracle 时代如此,TiDB 时代同样如此。
六、写在最后
从"Oracle 够用了"到拿下 TiDB 认证,这段历程让我重新理解了学习这件事:
最好的学习不是为了考证,而是为了解决问题;但考证,可以让为解决问题而进行的学习,变得更系统、更深入。
证书不是终点。PCTA 让我懂了原理,PCTP 让我会了运维,但真正的考验永远在下一个去 O 项目、下一次告警、下一个数据量翻番的系统里。国产化替代的浪潮还在往前推,我们这一代 DBA 注定要在两种技术体系之间架桥——Oracle 的严谨方法论是我们的底,分布式的新架构是我们的路。
对同样从 Oracle 出发、正在观望 TiDB 的同行,我的建议只有三条:
- 带着 Oracle 的内功来,放下 Oracle 的架子学——SQL 与优化的功力全可复用,架构思维必须换脑;
- 理论靠画,实践靠练——默画流程图 + 五段练习法,亲测有效,再配一张 Oracle↔TiDB 概念对照图事半功倍;
- 报个考试——给自己一个截止日期,你会感谢那个被逼着搞懂一切的自己。
与各位在路上的人共勉。