明星 DBA 层出不穷的时期
刚进入阿里时听过一句话一直记到现在,“要像了解自己的老婆一样了解自己管理的数据库”。当年我还没有结婚,对这句话的理解并不深刻。
这应该是@冯春培说的,当年进阿里的面试考官之一,大家都服气的称他为大师。
这句话后面其实隐含了一个背景:相比现在,当时的应用迭代较慢,架构集中,尤其是在数据库层面,用比较流行的叫法是巨石型“monolithic”应用。
在数据库数量、容量和业务需求都没有爆发的情况下,更需要 DBA 做出极致的优化,更强调对数据库内核的掌握,10年前混过 ITPUB 的都知道,当时的 DBA 都是以写出极其复杂的 SQL 和掌握 Lock、Pin、Latch 运行机制为荣的。
还记得,当年每条 SQL 上线都需要 DBA 审阅,这也是 DBA show muscle的最好机会。
巨石型应用突出了DBA 的重要性,那是一个明星 DBA 层出不穷的时期。
DBA 的转型期
后来有机会去了百度,作为一名 DBA ,给我的冲击很大,总结下来有几个不同:
- 数据库以 MySQL 为绝对多数,并且大多数都是由开发自己运维
- DBA 团队刚刚组建,目标是集中管理集团的所有数据库。当时整个团队不到15人,线上运行的 MySQL 实例1000+
1000+实例和15个 DBA,这时我刚结婚,虽然时间不长,但我马上意识到 “要像了解自己的老婆一样了解自己管理的数据库”恐怕是做不到了。
工作的重点不再是学习数据库内核和SQL Review, 而是转而将大量的日常运维工作脚本化,自动化(其实是人肉+半自动)。当时没有Puppet/Ansible,一刀一斧都得自己来,不得已, 又捡回编程的手艺。这个时候, 我从关注少量库的性能 (Load, TPS, QPS),到关注大量库的可用性,主要包括:
没有SQL Review这样奶妈式的贴身服务,如何能解决性能问题呢?总结下来就是:
- 将复杂的SQL拆分成多个简单的 SQL, 将复杂性留给应用
多说几句:
- Scale Out:要支持Scale Out架构,应用需要做些改造。说一个常见的问题, MySQL集群的各个分片如何高效的,不重复的获取自增序列作为 PK 或者 UK 呢? 在 Oracle Rac 里面,sequence让一切变得简单,DBA 关注的只是如何优化获取 sequence 的效率。但是在百度,我第一次知道原来可以通过 zookeeper 解决这个问题。
- 监控:当时 Noah (百度内部的告警平台) 有个功能, 一旦发现线上运行的服务器负载低于指定阈值时, 将会给相关人发送报警,提示有资源浪费。这个报警追踪了资源的使用情况,有效的防止了资源浪费的问题。
- SQL Review,:从阿里巴巴集团研究员@张瑞(两个面试官中另外一个)发表的题为《面向未来的数据库体系架构的思考》可以看到类似的描述:
我也逐渐意识到对 DBA 的要求发生了变化。从精细化运维到集群化运维,从关注个别库的性能到关注集群的可用性,从依靠个人的能力到借助监控平台和大量的运维脚本。
这是一个转型期,对DBA的要求更综合,更全面,不会当厨子的裁缝做不了好司机。
拥抱虚拟化
2017年,WoquTech 已经成立6年,巨石型 “monolithic”应用依然广泛存在。同时,用户对于数据库运维自动化的要求越来越高,数据库即服务(DBaaS or RDS)的需求越来越强烈,AWS RDS 有个很精炼的总结:
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。