十年前,我加入了陈华、吴世春创办的酷冷通信网,开始了互联网生涯,有幸接触到开源世界的宝藏,尤其是MySQL。)最后,两年后,我正式成为MySQL DBA。感谢当年如日中天被称为中国Facebook的校内网和我的导师兼导师刘桂英老师,感谢他们给我机会和空间,让我在MySQL的世界里自由飞翔,做那件事。
校内网络DBA球队
从事MySQL DBA是我一直引以为傲的事情。我一直认为DBA是一个与众不同的职业,要把人分为两种,一种是DBA,另一种是非DBA。
DBA是什么?
和SA差不多,但是从业务层面来说,事情比SA多,主要涉及的人多,笑着骂着,都是性部长。
类似于DEV,但总是有冲突。大多数情况下发生在双方对数据库使用的看法和优化上。我们不得不为DEV自己开发Inception。
PM,设计库,优化表,到处都是艺术。
和CTO差不多。是的,你以为我说的是CEO吗?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处理能力等。需要了解数据库正在运行的操作系统的知识、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月份为将要开始写作的这本书写的一篇前言,这是当时要写的内容的一个轮廓,现在看来已经大相径庭了。
去哪儿网是一个做线上旅游产品的网站,主营线上机票和酒店,以及其他旅游相关的产品,例如火车票,度假线路和旅游攻略,目的地生活,接送机场、景点、火车站的专车,景点门票等等。发展到现在,去哪儿网已经算是一个纯粹的电子商务网站了,而在网上的各种业务逻辑和操作,大部分都是用MySQL作为后台数据库支撑的,这也包括交易的支付业务和账务系统。要完成这些,除了依靠强大的前端业务逻辑以及丰富的流水日志外,对MySQL运维管理也是极大的挑战,这也使得去哪儿网的MySQL DBA得到极大的历练。去哪儿网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 于北京