十年前,我有幸加入了陈华、吴世春创办的酷讯网,开启了我的互联网职业生涯,同时也让我开始接触到开源世界的件件瑰宝,尤其是MySQL。终于,两年后,我正式成为了一名MySQL DBA。这要感谢当时如日中天的、被誉为中国Facebook的校内网和我的良师益友刘启荣先生,让我有机会和空间,在MySQL的世界里自由翱翔并得其所哉。 校内网DBA团队 从事MySQL DBA工作是我一直以来引以为豪的事情。我一向认为DBA是个与众不同的职业,如果要把人分两类的话,那么有一种分法就是,一类是DBA,另一类是非DBA。 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精神永续下去,让更多人受益,让更多技术普及。 本书的写作,正是出于分享的目的。我们依靠开源软件和技术实现了自己的职业理想和人生价值。饮水思源,投桃报李,我们愿意把自己在工作中的点滴积累分享出来,以期能帮助到更多的人。 写书,其实并不是那么轻松。在我周围,好多朋友都有这样的想法,甚至已经付出了巨大努力与心血,但最终并未能如愿,非常非常的遗憾。一方面,互联网是一个以快为王道的行业,大家平时的工作并不轻松,尤其是DBA,7X24小时的服务要求你时刻准备着投入工作。另一方面,开源社区也是日新月异、一日千里,稍一迁延,所述的题材和内容也就落伍了。 下面一段引文是我在2015年7月份为将要开始写作的这本书写的一篇前言,这是当时要写的内容的一个轮廓,现在看来已经大相径庭了。
去哪儿网DBA团队 从上文中亲爱的读者会发现,有很多文中提到的内容在本书中并未涉及到。真实的情况是,近两年来,我们一边工作,一边偷空写作,写写停停,停停写写,随着时间的流逝,很多内容已经不适合再放入本书了,例如我们对于MMM和MHA的使用方案和运维经验;另外,在实践中我们也发现,有些技术和方案,是紧密联系业务的,事关公司敏感信息的内容也无法放在书中。于是,我们又有了写写删删,删删写写的痛苦经历。技术书籍的时效性于我们有切肤之痛,曾经有多少次,此书几乎走到了夭折的边缘。 这里,要衷心感谢一下我亲密的战友王竹峰先生,与之相识相知真乃人生一大快事。竹峰的存在,不仅帮我实现了自己诸多的技术设想,也帮我坚定了去做很多事情的信心。本书的写作过程中,竹峰的坚持与毅力鼓舞了大家,竹峰的贡献和劳动是此书能够出版的关键。本书的另一名作者强昌金,在工作和写作中所表现出来的初生之犊的冲劲和孜孜不倦的精神,也极大推动了本书的完成。 《MySQ运维内参》写作校对小分队 给读者带来最实用的内容是我们一直追求的目标。我们能力有限,学识浅薄,只能花出十二分的气力,写一些我们自己熟悉和擅长的东西呈现给读者。对于没把握的东西,宁可缺失,也不能草草充数了事。这些年,我们最熟悉的东西有三种,那就是本书的MySQL、Galera和Inception。MySQL是本书的根本,我们使用了多年,而且竹峰在MySQL源码上的钻研心得也极大地提高了本书的含金量。我们在去哪儿网所推行的基于Galera的PXC方案算是近年来最先进的MySQL集群化方案之一了,它的数据一致性和高可用性的特点特别适合去哪儿网这种涉及交易和电子商务的服务型业务,经过三年的实战实践,它帮我们支撑了大部分业务需求,我们受益匪浅。而Inception,则是我们送给所有MySQL DBA和MySQL相关开发人员的礼物,Inception的出现,把DBA审核SQL、操作SQL的效率提升了一个量级,也为数据库操作的安全性和规范性提供了行业参考,作为Inception的设计、开发、使用、推广者,我们不能不去提它。 而对于已经不再适应时代发展和技术潮流的内容,我们也绝不手软。MMM和MHA的部分曾经写的很辛苦,而临到最后,我们决心还是把它们删去,如果有希望了解这方面知识的读者,请自行查找吧。但我还是要奉劝大家,MySQL集群化的时代已经到来,基于Galera的Percona XtraDB Cluster和MariaDB Cluster以及最新的MySQL Group Replication才是上上之选。 MySQL已经进入了到了MySQL 5.7时代,并且MySQL 8.0也已经呱呱落地。我们也高度重视了在这方面的匹配。虽然我们开始写书的时候还在用MySQL 5.6版本,但到了后期,除了某些原理性的源码解析,对于版本差别没那么敏感,我们努力去兼容新版本的特性。尤为荣幸的是,来自MySQL官方资深的技术顾问杜修文先生和MySQL一线开发团队的宋利兵先生愿意以特邀撰稿人的身份特别为我们的书写了一部分内容,这是MySQL最新版本相关功能的权威解读。 我们在书中努力加入了很多在平时工作过程中碰到的案例以及经验总结,这也算是本书的一个特色吧,希望这些能在实战中切切实实地帮助到读者。 最后,我还是想把上面几年前说过的话再重复一遍:MySQL是历史悠久的开源数据库,有着非常强大的社区和人数巨多的拥趸,这里面卧虎藏龙,大牛辈出。由于我们知识范围有限,如果此书中有疏漏或者不妥之处,还望见谅,我们会积极改进,不断进步的。 周彦伟 2017.1.25 于北京 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|