返回 登录
29

专访周彦伟:十年技术老兵谈为什么MySQL最流行及DBA精神

编者按:在老一代的数据库老人中,周彦伟是其中的佼佼者,不仅着眼于自己的成长,还不断致力于该领域的发展,成立了技术社区、组织技术沙龙活动等,造福了很多,如今又将有新书出炉,为技术人带来全方位的福利,以下是CSDN对他的专访,他总结了自己多年来的成长和他眼里的“DBA精神”:责任心、服务心、沟通心、学习心、进取心和分享心。


采访:仲培艺;责编:钱曙光

图片描述

周彦伟 去哪儿网数据库总监

CSDN:首先能否请您介绍一下自己、您的团队以及您所关注的领域?

周彦伟:我是周彦伟,目前在去哪儿网担任数据库总监。在去哪儿网负责数据库平台的管理和维护工作。工作范围包括MySQL、Redis、HBase平台的架构设计、性能调优、日常运维以及自动化运维平台设计。曾经担任人人网(校内网)MySQL技术主管,负责数千规模的MySQL数据库实例的运维管理。在这个领域内有近10年的工作经历。

出于对于MySQL的兴趣,在业余时间作为创始人之一组建了中国MySQL用户组(ACMUG),并长期任ACMUG主席,领导和组织中国MySQL社区活动。在过去的几年间,把中国MySQL用户组社区从一个不起眼的小沙龙,做成了分会遍及全国,会员不计其数的大型社区,陆续在中国大陆的北京、上海、深圳、福州、厦门、成都、武汉、济南以及台北和香港等地开展了MySQL相关技术沙龙活动,影响了大部分中国MySQL从业者。

跟王竹峰、强昌金一起合著有《MySQL运维内参—— MySQL、Galera、Inception核心原理与最佳实践》一书,目前正在出版社校对和排版,计划2017年5月面世。

2016年初,基于我对中国MySQL技术和社区所做贡献,Oracle授予了Oracle MySQL ACE Director 的荣誉。

CSDN:您曾谈过人人网四余年,受益良多,那么是什么样的契机让您选择来到去哪儿网,这个过程中是否有什么难忘的经历可以和大家分享?

周彦伟:人人网是我MySQL职业的起点,在那里的确是受益良多,是人人网促进了我的成长,我对此非常感激。跟大数据、高并发的人人网业务相比较,去哪儿网的业务类型是以电子商务为主,大部分业务都是订单、账务之类,这类数据更敏感,对数据安全要求更高,对DBA的要求也更苛刻,挑战也更大。基于自身成长的考虑,以及时任去哪儿网CTO吴永强先生的热情邀请和充分信任,我在人人网工作四年多之后,忍痛离开,去寻找新的起点。在此,我也感谢去哪儿网,是这样一个环境让我更上层楼。

CSDN:您在MySQL领域苦心孤诣多年,这份执着的起源是什么呢,或者说是什么样的机会让您将目光投注到MySQL上的?

周彦伟:中国互联网的兴起大概是在90年代末,门户网站和搜索引擎的兴起,把中国一下子带入了互联社会。但真正的复杂逻辑型网站的繁荣,大概要在2006年之后了吧,那个时候开始,互联网逐步深入到了垂直领域、社交领域、电商领域、金融领域。随之而来的,就是这些复杂逻辑带动了网站对关系数据库的需求,特别是对OLTP的需求,MySQL成了解决这一需求痛点的金钥匙。中国大部分互联网公司都选择MySQL数据库来支撑自己的业务。

我从2007年开始进入互联网工作,并开始接触MySQL,亲眼目睹了这一现象,并预测对MySQL人才的需求将会越来越大,这对个人的职业和发展是一个不可多得的良机,在加上我十分推崇MySQL的开源、开放、自由的思想,于是在做了5年的编程工作之后,毅然转型到了MySQL。目前来看,这还算是个不坏的选择。

CSDN:众所周知,MySQL的目标是要做“最流行的数据库”,您是觉得让它在通往这一目标的道路上得以不断前进的要素是什么,它有着怎样的特性?

周彦伟:目前来看,如果把MySQL官方版加上它的主要分支Percona,MariaDB的话,MySQL应该已经实现了这个目标。为什么MySQL会那么成功?这是一个有意思的话题,也有很多人讨论。原因可能很多,我之前在自己的公众号(ID:formysql)里面写过一篇文章《MySQL流行的原因》,现在看看还是适用的。引用如下:

从上世纪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先生本人的认可,我们会继续前行,为中国的开源数据库做出贡献。

CSDN:都知道您在MySQL之外,对Redis和Oracle等数据库也有很深入的研究,当初在众多计算机分支中,是出于什么原因选择从事数据库行业的?

周彦伟:在上面第三个问题已经聊到过,在过去这十年,是属于MySQL的时代,并且我坚信这个时代还在不断延续,并且人们对MySQL的依赖越来越强了。

大胆预测一下,如果过去十年是互联网的MySQL,那么接下来的十年,应该会是传统企业的MySQL,让我们拭目以待。

CSDN:在您看来,一名优秀的DBA需要具备哪些素质,包括专业知识上方面,以及精神方面。而您初次涉足DBA行业又是什么样的背景呢?

周彦伟:我在自己的公众号里面也曾经写到过我所认可的“DBA精神”,同时在我们的新书《MySQL运维内参》“前言”里面又相信阐述了这个想法:

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精神永续下去,让更多人受益,让更多技术普及。

CSDN:数据库行业对知识的积累和不断更新优化有着极高的要求,这里您能否结合经验,和大家分享一下您觉得值得推荐的学习方法或策略?

周彦伟:在我接触MySQL的时候,苦于没有太多的参考资料,我曾经大规模地阅读官方文档,这是一个最笨,但也是100%有效的学习方法。当然,到现在为止,随着行业的发展,越来越多的人会把自己的经验和心得分享出来,学习途径跟10年前比要多太多了,各种书籍,博客,自媒体数不胜数。这里也给自己打个小广告,欢迎关注我的个人公众号:MySQL运维内参(ID:formysql)和我们正在签名预售的新书《MySQL运维内参——MySQL、Galera、Inception核心原理与最佳实践》。

有句诗云:纸上得来终觉浅,绝知此事要躬行。MySQL是运维型技术,要求极强的动手能力和操作经验,所有的培训班和书籍只能指明一个方向,提供一个参考,最重要的还是要自己动手,如此方能丰衣足食。

CSDN:最后,能否请您分享一下对于MySQL未来发展的预期?

周彦伟:我在自己的公众号里面曾经写过一篇《Galera的未来—Group Replication发布后的思考》,其实文章所提到的Galera和Group Replication均是MySQL未来发展的方向,这就是集群化。我也会在今年的若干技术大会上分享我对MySQL集群化的一些看法和尝试,这包括MySQL NDB Cluster,MySQL Galera Cluster和MySQL InnoDB Cluster。在未来的若干年内,MySQL会一直引领数据库发展潮流,并以集群化的解决方案为更大广大的传统企业服务。


SDCC 2017•上海站将于2017年3月17-19日登陆申城,三大技术峰会和24位嘉宾,汇聚国内知名的互联网公司CTO、架构师、技术总监,畅谈运维、数据库和架构的热门话题和技术热点,遇见精益运维发起人&优维科技CEO王津银、MongoDB大中华区首席架构师唐建法和华为软件API开放平台架构师李林锋等大牛。截止3月5日前门票八折优惠中,5人以上团购立减1500元,详情点击注册参会

图片描述

评论