十年技术老兵谈为什么MySQL最流行及DBA精神
本文作者 去哪儿网担任数据库总监 周彦伟
从上世纪90年代后期开始,互联网的热潮开始席卷全球,也为MySQL的发展提供了广阔的空间。特别是基于交互的社交,电子商务,以及金融互联网的发展,对传统的数据库服务能力提出了挑战。高并发,高性能,高可用,轻资源,易维护,易扩展的需求,促进了MySQL的长足发展。
MySQL流行的原因可以归结为以下几点:
简单
尽管MySQL源码的入门门槛很高,很多人不能深入其中,但是MySQL的使用还是非常简单的,任何稍微有IT背景的技术人员都可以无师自通地参照文档安装运行和使用MySQL,这几乎没有什么门槛。同时,MySQL支持大部分ANSI SQL-92,略有经验的使用者都能完成基本的操作需求。
开源
开源意味着安全和免费,代码就摆在那里,无数的技术爱好者一起来审核程序,一起修补问题,这让使用者非常的放心。同时,开源带来了免费。从上世纪90年代末一直持续到现在,互联网的兴起并快速发展,对免费数据库的需求非常迫切,免费,也让规模化部署的需求成为可能。要知道很多大型互联网公司的MySQL集群都是数以千记或者万记的,如果是按照传统的商业数据库的收费模式,没有人愿意承担。免费,让数据库大规模使用成为可能,也提升了互联网的交互式服务的质量。
复制
MySQL从3.23.15这个版本开始,支持了replication,可以帮助MySQL使用者搭建Master-Slave的架构。把数据准实时的从一个实例同步到另一个实例。这个时间是2000年之前。要知道,其他一些开源数据库是在最近的几年里才开始支持这样的功能的,这对于数据库使用者来说,不管是在线备份还是读写分离,或者负载均衡到多个读库,意义实在太大了。在2010年之前,一个Master,多个slave的部署情况随处可见,我见过有12个slave的情形,可以设想,如果没有replication功能,我们要用数据库处理百万甚至是亿万规模的查询负载是非常困难的。
引擎
MySQL不同于其他多数数据库之处是它对插件式存储引擎的支持,这是一个开放的设计,有点兼容并包,海纳百川的感觉。熟悉MySQL的人随便就能报出几种MySQL存储引擎的名字,MyISAM,InnoDB,NDB,TokuDB,等等。而MySQL里最常用的,也是奠定了MySQL开源数据库之王地位的InnoDB,并不是Monty或者他的伙伴们开发的。插件式存储引擎的设计,让InnoDB以及其他存储引擎轻松接入到MySQL Server,集百家之长,这样MySQL就有了无限的活力和竞争力以保持其长盛不衰。
支持
Monty说在早期MySQL刚刚推出的时候,他亲自写了30000封邮件来帮助人们使用MySQL。这样持之以恒,不辞劳苦,不厌其烦的精神让人赞叹。我们自己也维护了一个开源数据库项目InceptionSQL审核。在过去的一年多里,我们也碰到了很多很多的使用者提问的问题,这种感受,真的是只有经历过才能体会其中的付出。
合作
MySQL在发布的早期,就广泛的跟其他社区合作,PHP和Perl的开发者都很愿意去传播MySQL的技术和新闻,很多Linux版本都会预装MySQL。一度LAMP(Linux、Apace、MySQL、PhP)成为站长或者开发者的标配。MySQL在各种合作中逐步深入人心,遍地开花。
社区
社区对MySQL的贡献功不可没。MySQL流行的一个重要原因就是人们常说的社区力量强大。社区为MySQL贡献了架构方案,运维工具,技术文档,宣传普及,乃至专业人才。放眼望去,不管是专业的数据库服务团队例如著名Percona,还是著名的技术型公司,例如google,facebook都在使用MySQL的过程中不断的给MySQL贡献新的功能和工具,帮助MySQL成熟和稳定。在国内,这几年我们一直在组织ACMUG(中国MySQL/MariaDB用户组,China MySQL/MariaDB User Group),它汇聚了中国最顶尖的MySQL及其周边技术的人才,同时得到了腾讯,阿里巴巴等公司的同行的支持和积极参与,公司有竞争,然技术却无界限,大家广泛交流,互通有无,功能促进中国MySQL技术的传播和进步。目前,ACMUG以及ACMUG所组织的技术交流活动得到了MySQL所属的Oracle公司,MariaDB所属的MariaDB基金会以及MySQL和MariaDB之父Monty先生本人的认可,我们会继续前行,为中国的开源数据库做出贡献。
DBA是什么?
- 有点像SA,但在业务层面上比SA事儿多,主要是牵扯的人多,嬉笑怒骂,皆成文章。
- 有点像DEV,但总是会有冲突,多数情况下发生在双方对数据库使用的看法和优化上。我们只好自己开发个Inception给DEV用。
- 有点像PM,设计库,优化表,处处都是艺术。
- 有点像CTO,恩,你以为我说的是首席建表官? DBA是操着鸡毛蒜皮的心啊。
- 有点像出租司机,改个表,我一向不待见那种不等改完甩手就走的,等待是一种美德,善始善终方显英雄本色。
- 有点像救火队员,网站挂了,可能跟DB没关系,但DBA一定要出现;DB挂了,一定跟网站有关系,DBA一定也要出现。
- 有点像银行点钞员,数据就是钱啊,只是都不是自己的,但职业道德最为重要。
- 有点像养孩子,当爹又当妈,哪个实例伺候不好,都会出乱子。
DBA是服务型职业,服务好了,没你啥事儿;服务不好,事儿就大了。
DBA承载着一个重要的角色,有着特殊的职责和使命,一个优秀的DBA其实是非常难得的。DBA应该具备怎样的能力呢?我曾经提出过“DBA精神”:责任心、服务心、沟通心、学习心、进取心和分享心。
DBA精神是责任心的体现
维护数据库数据的安全和完整是管理员的首要责任。在管理数据库的过程中,作为一个DBA,要把数据库看做自己的财产、自己的儿女、自己身体的一部分。此种职责,需要你像呵护自己眼睛一样去照顾你所维护的数据库。时刻去想,有没有做应该有的备份,有没加应该有的监控,有没有做必须的安全权限限制。一旦出问题,有没有第一时间去分析和解决问题,这就像你的自己的眼睛,一旦出现红肿病态,多少人会视而不见?
DBA精神是服务心的体现
现代互联网对DB的需求,是需要支撑业务持续稳定的运行和源源不断的变更,这要求DBA有7X24小时的服务精神。这是一个服务性职业,需要随时随地响应来自各方面的各种需求。其一,人的需求,业务要发展,DB就会有变更,只有DBA与开发人员紧密配合,才能顺畅高效地完成工作。其二,事的需求,DB是个动态的系统,不断的运转就会不断的面临新问题,机器故障,磁盘报警,内存不足,CPU过载等等。这是个脆弱的系统,它不会对DBA的迟钝有半点仁慈,一旦有问题,任性的宕机是必然的结果。其三,心的需求,DBA应该出自内心地主动去对DB做不断的优化,这种优化,可以在结构上,可以在架构上,可以在业务逻辑上,关键之处在于,你有没有心。说得通俗一点:“没事找事儿”。
DBA精神是沟通心的体现
DBA的工作,不是封闭的科学研究和孤傲的英雄主义,不管是主动的优化,还是被动的接受任务,都是需要与人做不断的沟通与交流。假如你不懂业务流程,不知道数据的来龙去脉,轻重缓急,那就谈不上数据库表的设计和优化。而数据库的优化,往往最大的进展是来自对业务逻辑的优化。这需要运用良好的沟通心态和技巧,深入了解业务流程和架构。与人沟通,是DBA获取知识和信息的主要途径,需要做到能与人沟通和会与人沟通。生活工作中,人的个性是千差万别的,面对形形色色的沟通对象,充分调动对方的积极性,进行愉快有效的交流也是DBA需要掌握的一门技术。
DBA精神是学习心的体现
DB在技术体系中是一个承上启下的中间环节,它运行在物理硬件和操作系统之上,同时承载着上层各种各样的业务逻辑的调用。对DB的运维和管理,不仅仅需要掌握数据库自身的基础知识,要保证这个系统的稳定和优化,就需要知己知彼,去了解它上下游的知识和特性。所以,一个优秀的DBA,需要了解你所使用的硬件,这包括磁盘的特性,网络的布局,内存的使用,CPU的处理能力等等;需要了解DB所运行的操作系统的知识,它是怎么调度IO的,怎么管理内存的,怎么优化文件的;需要了解上层业务是怎么调用数据库的,SQL怎么写的,看懂了业务逻辑的程序才能明白有的SQL是不是多余,某些SQL是不是可以优化。我们看到在MySQL官方和MariaDB官方,都已经针对硬件开始在官方源码的基础上做自动优化了,同时MySQL官方也提供了自己的集成于业务端的高可用方案,这都是开源数据库进步发展的必然结果。同时,由于开源数据库的盛行,针对数据库自身代码的学习和研究,也逐渐成为优秀DBA的必修课了。
DBA精神是进取心的体现
随时发现问题,分析问题,解决问题。通过问题现象,依赖自己的经验和知识,同时探索未知的知识去解决现实的问题,在这个过程中,也是自己积累经验和不断成长的过程。相对而言,解决问题本身并不重要,重要的是在此过程中探求解决问题的方法和所获取的经验,DBA的职业优势也在于此,同时,主动花费心思与精力去不断追求问题的优解和技术的极致,也是DBA应尽的职责。
DBA精神是分享心的体现
这些年,我们一直在倡导做一件事情,那就是提倡DBA在开源社区持续做技术分享。我们做了ACMUG,全称是 China MySQL User Group。A你可以认为是All,或者About,或者是Active,它代表了所有关心MySQL及其相关技术的积极参与分享活动的人。在过去的数年里,ACMUG已经组织了上百场技术分享,分享者都是工作在一线的DBA或者数据库技术爱好者,通过参与这个活动,大家都切切实实的得到收益,个人在技术上也取得了巨大的进步。通过分享,大家学到了技术、开拓了视野、展开了思路,当然也交到了朋友。我们希望能通过这样的活动,把DBA精神永续下去,让更多人受益,让更多技术普及。
你也许感兴趣的:
- MariaDB消亡史
- 3700 万美元“卖身救命”,泥潭深陷的 MariaDB 准备退市
- MySQL 中引入对 JavaScript 的支持
- MySQL 支持 JavaScript,目前处于预览阶段
- 无中断升级 1200 多台 MySQL 服务器,GitHub 是如何做到的
- GitHub.com跑了1200多台MySQL主机,如何无缝升级到8.0?
- 全方位对比 Postgres 和 MySQL (2023 版)
- MySQL 小心了:MariaDB 会取代你!
- 译 | MariaDB 和 MySQL 全面对比:选择数据库需要考虑这几点
- 译 | 永远不要在MySQL中使用utf8,改用utf8mb4
你对本文的反应是: