多年前我就考下了PCTA,当时觉得自己对TiDB已经有相当程度的了解了。
别人聊TiDB,我都能接上话:TiDB Server/TiKV Server/PD Server 三层架构、Region分片、Raft多副本、MVCC分布式事务……聊原理,我似乎从不打怵,标签贴在心里:TiDB,我熟。
直到前一段时间的一次面试,面试官问:“TiDB集群组件升级的顺序是什么?升级前要做什么检查?”
我愣了一下。脑子里除了”tiup cluster upgrade“ 这条命令,什么都想不起来。
顺序?升级前的DDL、备份、Region健康检查?滚动升级时TiKV的leader怎么驱逐?升级后怎么验证?
我一个都答不上来。那一刻我才真正明白:证书考的是”知道“,面试问的是”会做“。理论是地图,实践是路,地图背得再熟,没走过路照样会迷路。
那次面试之后,我开始补课。也正好赶上TiDB 平凯数据库社区组织免费考试活动,有考前精讲、零门槛参与,我就报名了,系统学习了PCTP(TiDB 数据库专家)和PCSDB(SQL 开发专家)系列课程。
和当年只听课不一样,这次我给自己立了三条规矩:
一是概念不背,每个知识点争取都要能说清楚”为什么“;
二是听课不停留在听,自己动手部署集群、模拟升级、演练故障;
三是不放过疑问,官方文档当教材,官方课程一遍又一遍过,仔细抠细节。
就拿那个之前面试让我出丑的问题来说,答案其实就在303的课程中,只是我之前是没看过课程,更没动手实践过。
学习过程中还有一个意外的收获: 输出是最好的学习
有些概念,比如Percolator协议、TiKV的Column Family,我总觉得"懂了",可真要讲给别人听就卡壳。于是我逼着自己写文章:用”多人团购“讲Percolator,用”三个抽屉“讲TiKV的default、write、lock三个CF。写的过程时,任何”半懂不懂“的地方都会现出原形,逼着我去查询、类比、重述。最近我也开始用Codex来解析TiKV的源码,是相当的有意思。
回头来看,PCTA让我认识了TiDB,PCTP教我怎么管理它,PCSD教我怎么用好它。证书从一本变成了三本,但比证书更值钱的,是我终于敢在下一场面试,坦然地和面试官聊各种实操了。
考试只是入场券,实践才是真正的考场。与各位TiDBer共勉。
最后分享下我写的两篇技术文章,希望大家多多指点,也祝大家学有所得
感谢 TiDB 社区组织的考证活动,也感谢一路交流的各位小伙伴。希望以后能继续参加社区活动,把更多"从理论到实践"的心得分享出来。