专栏名称: DBAplus社群
围绕数据库、大数据、PaaS云,顶级大咖、技术干货,运营几个月受众过十万!成为运维圈最专注围绕“数据”的学习交流和专业社群!欢迎投稿,加入探讨。
目录
相关文章推荐
数据分析与开发  ·  马斯克被“打脸”?150岁老人领社保,竟是程 ... ·  2 天前  
数据中心运维管理  ·  一台交换机能带动多少网络摄像机? ·  3 天前  
数据中心运维管理  ·  数据中心越建越大,怎么办? ·  4 天前  
数据中心运维管理  ·  2025年数据中心值得关注的冷却趋势和策略 ·  3 天前  
数据中心运维管理  ·  数据中心的等级划分 ·  5 天前  
51好读  ›  专栏  ›  DBAplus社群

MySQL DBA的修炼与未来,看看老司机们怎么说?

DBAplus社群  · 公众号  · 数据库  · 2017-09-04 07:12

正文


随着MySQL地位爆炸式的提升, MySQL DBA的市场缺口日益剧增,优秀的MySQL DBA正在成为各个互联网公司抢手的人才。 然而,需求来了, 问题也来了, 如何快人一步提高自身技能,让自己在日益激烈的技术挑战中不断增值、脱颖而出?


今天,我们将锁定MySQL数据库,通过 韩锋、虢国飞、杨奇龙、杨建荣、张青林、李辉、贺春暘、 李季鹏 等8位MySQL专家的经验之谈,为想从事MySQL DBA的同学们答疑解惑,指明一条修炼的路子。


目录大纲


认真读完本文,你可以了解到:


一、选择篇

1、MySQL的流行原因及从业前景

2、MySQL DBA的薪资缘何普遍高于Oracle DBA

3、个人如何完成Oracle向MySQL的转型?


二、学习篇

1、从初级到高级的MySQL DBA学习路线及 学习资料推荐

2、源码是否为高级MySQL DBA的必备技能?

3、MySQL不同分支的选择讨论

4、MySQL认证考试的含金量


三、趋势篇

1、随着功能的不断完善,MySQL还会是“小而美”的代表吗?

2、MySQL目前还缺乏哪方面的能力,是否足够成熟?

3、如何看待数据库中间层与数据库的关系?

4、传统运维逐步萎缩下,DBA应选择什么方向发展?


四、未来篇

1、数据库云化会对传统DBA带来什么样的冲击?

2、如何看待分布式数据库的未来前景?

3、 越来越多的DBA正在或将从事DevOps类工作,你的看法是?


选择篇

Q1:你认为MySQL流行的主要原因是什么?从长远角度来看,从业前景如何?


1、流行原因


虢国飞: 综合来看,MySQL的流行是偶然中的必然。 原因主要有以下 三点:


  • 免费: 传统数据库昂贵的license费用是很多企业一块心病,MySQL社区版已经能满足大部分用户的需求,而且是免费的,自然在企业内部推广时不会遇到阻力(老板们肯定支持);

  • 开源: 开源的好处是只要你想,你可以深入到代码级别来了解数据库的运作原理(甚至可以改造它),这个远胜于传统黑盒数据库只是简单输出一些log或者白皮书来让人猜测运作情况,开源能让DBA能知其然并知其所以然,而且开源社区还有丰富的工具,给DBA在维护上面提供了强大的支持。 DBA能在社区快速找到自己需求的东西,组合成自己的工具箱,所以社区工具的丰富也弥补了产品本身的缺陷;

  • 简便: 这一点使得MySQL部署简单,新手学习门槛低、上手快(当然要真正掌握好还是需要大量学习的),不要花费太大的精力就能快速搭建起一套高可用的集群来,而不像Oracle数据库那样,有很多配套东西需要了解,没有几年的学习很难掌握,对于新手来讲都会觉得挺难的,所以MySQL能在DBA群体(甚至包括开发人员)中快速地普及。


2、就业前景


李辉: 目前来看,MySQL DBA的日子还是很滋润的,在可预见的3-5年内,MySQL在互联网行业的地位仍无法取代,对DBA的需求量仍然很大,特别是中高级DBA。但从长远角度来看,从业人员也要多涉猎其它关系型数据库以及NoSQL、Devops、云计算等技术,现代社会唯一不变的就是变化,不断学习、拥抱变化才能保证自己不被未来社会淘汰。


Q2:如何看待当前MySQL DBA的薪资普遍高于Oracle DBA的现象?如果想从事DBA,选哪个数据库更好?


1、MySQL DBA高工资的原因


杨建荣: 因为是和Oracle来对比,可以分为几个方面来看:


  • 首先 物以稀为贵 ,MySQL DBA相对Oracle DBA来说要少一些,随着现在互联网行业的发展,这个需求还是会持续增长;

  • 第二 还是物以稀为贵 ,任何工种,高级职位都是稀缺的,如果你能够成为行业内的20%的人,无论你是从事哪种数据库,都会混得还不错。

  • 第三 还是物以稀为贵 ,什么事物的发展都有一个成熟度曲线,水涨船高之后,留在你手里的是真技能还是花拳绣腿,数据库的功能会越来越丰富,你的技能也要升级,不升级的话,用哪个数据库你都会很吃力。


杨奇龙: 对于薪资高这点,我觉得要从两方面看:


  • MySQL DBA和Oracle DBA 的 雇主行业不一样 ,MySQL DBA 多属于互联网等新兴企业,大多数是资本聚集,而Oracle DBA 则从事于传统或者部分大型企事业单位。两种企业的薪资平均水平本就有差距。

  • 从技能要求上, MySQL在功能上比Oracle “弱”或者说不完善,需要DBA具有更高的技术掌控能力做HA、备份、恢复、校验等。Oracle 则提供了比较完备的功能。


2、从事DBA岗位,选MySQL还是Oracle?


杨建荣: 有句话说,选择的利剑属于在于能够挥舞它的人,根据工作需要,自己的喜好去选择就可以,如果只是本着钱途是不推荐的。如果非要纠结到底是哪一个,其实也可以换个角度, 如果两个都学,是不是这个问题就不是问题了。


杨奇龙: 我的想法比较实际。行行出状元,不管是MySQL DBA 还是Oracle DBA都有比较成功的人士, 建议是看各自的兴趣和爱好,以及自己想进的公司的招聘需求。 MySQL 和Oracle 并不矛盾,我认识的相当多的人,两种数据库都能维护得非常好,比如大牛楼方鑫,Oracle 工具开发以及MySQL 内核开发都有非常出色的成果。


Q3:个人职业发展如何完成Oracle向MySQL的转型?


杨建荣: 从自身目前从事的工作,分三种情况来看:


(1)目前从事的工作以商业数据库Oracle为主,又想转型为MySQL DBA的:


自搭环境学习实践是一个起步, 如果觉得没有明确的学习目标, 考个MySQL OCP 也是一种阶段性的学习成果验收,总比漫无目的的学习收获要大。已经有了Oracle基础,可以通过对比的方式来引入到MySQL的学习中。公司如果后期引入MySQL方案,你就是最佳人选了。


(2)目前工作中有MySQL环境的:


在做好本职工作的前提下, 可以自荐, 让别人推荐来做MySQL DBA的工作。对企业和你个人都是双赢,所以开发测试运维同学相做MySQL DBA也是可以的。


(3) 现有的MySQL工作和自身期望相比差距较大的:


一种方式是自查 ,我们在当前的环境还能够做出些什么,如果能够把当前的环境做到精细化的管理,总会有非常多的事情和收获, 还有一种方式就是跳槽 ,这个的前提也是你在储备了很多的技能之后,因为机会是留给有准备的人。


虢国飞: 我是从SQLServer转型到MySQL的 ,感觉这个转型应该比Oracle转MySQL更大,因为本身还要克服操作系统的区别(Windows转型Linux),不过如果你已经有一个数据库产品的经验,再来学习其它数据库产品,难度应该不是很大,因为很多底层的原理是相通的,概念也差不多,无非是各种产品在设计上侧重 点有不同、使用方式上有差异。


所以我觉得要完成这个学习转型,首先 心态上面应该放开 (千万不要带偏见,认定哪种好哪种不好), 通过对比的方式来学习和实践 ,善于总结差异分析优劣,多和同行沟通交流,相信转型过程 不会太长。


李季鹏: 从Oracle到MySQL转型,不单单是一个人的学习过程,也是一个从开发到运维的磨合过程。


  • 首先,战略上要藐视敌人, 熟练掌握Oracle的话,对于任何一种关系型数据库的学习都是事半功倍的,特别针对MySQL,可以视为一个功能和手段做减法并寻找替代手段的过程;

  • 但重要的是,战术上要重视敌人, 限于MySQL的特点,特别是中大型场景,把MySQL当Oracle用只会更加痛苦,必须放弃原有的Oracle视角,坚持MySQL大而化之的特点。


学习篇

Q1:从初级成长到高级,有推荐的MySQL学习路线吗?


杨奇龙: DBA 是一个“复杂”的工种,要成为高级/资深MySQL DBA,我总结了以下五点:


  1. 官方文档是最好的学习资料。 通读官方文档是最扎实的学习方式,目前大多数同行只是把官方文档当做参考资料。其实把官方文档理解透彻你已经能成为高级DBA了。

  2. 纸上来得终觉浅,绝此事要躬行。 多动手,多做实验验证技术功能点。

  3. 找一个有业务量的平台 ,锻炼自己的技术能力。

  4. 能干活,能写文档,能讲。 能够将自己理解的知识教会其他人才算真的弄懂。

  5. 不懂业务的DBA 不是优秀的DBA, 能够思考如何存储数据,也要会和开发沟通讨论业务如何访问数据才算最合理的。


参考DBA技能树

http://blog.itpub.net/22664653/viewspace-2097142/


杨建荣: DBA干的是一个手艺活(鹰眼,狮心,女人手),里面有很多技巧,但是一个岗位从初级走向高级始终是经验和实践的积累,没有其它捷径。这里给大家提供一个自查级别的方法:


Q2:关于MySQL学习资料、书籍或网站,你的推荐是?


杨建荣: 简单来说,官方文档是最好的学习资料,在这个基础上去阅读更多的书籍会起到融会贯通的作用。如果推荐书籍,我有下面的一个读书清单可供参考。


入门:

《涂抹MySQL:跟着三思一步一步学MySQL》

《MySQL数据库应用从入门到精通(第2版)》

《MySQL核心技术手册》

《MySQL技术内幕(第5版)》


运维实践:

《高性能MySQL》 经典必读

《MySQL管理之道:性能调优、高可用与监控(第2版) 》贺春旸

《深入理解MySQL核心技术》帕奇维

《MySQL运维内参 》 周彦伟、王竹峰、强昌金

《高可用MySQL》


内核:

《MySQL技术内幕:InnoDB存储引擎(第2版)》姜承尧

《InnoDB - A journey to the core》Jeremy Cole


杨奇龙: 在建荣老师的基础,我再推荐: 系统优化-《性能之巅》、开发- 《Python 编程:从入门到实践》


张青林: 《数据库系统原理》、《InnoDB存储引擎》。


李季鹏: 最为建议的还是官方文档,如果嫌官方文档英文看着麻烦,可以关注Github上的MySQL 5.6 手册翻译项目( mysql2cn / manual56 )。


Q3:你认为研读源码是通向高级MySQL DBA的必备技能吗?


杨奇龙: 从我的理解来看 DBA 可以分为 产品DBA、运维DBA、内核研发DBA。 具有内核研发能力或者阅读内核源码的人,在了解具体技术原理时具有一定的优势。但是成为 高级DBA和是否研读源码不冲突


需要注意的是,我们要有打破砂锅问到底的“要性”。其实大牛和我们的差距就是对于一个个技术问题刨根问底的及时钻研。比如你遇到thread running飙高的问题时,是把慢查询优化了就好了吗?还是举一反三,反思什么原因会导致thread running飙高?要懂得去思考下面四个问题:


  1. 业务是否需要缓存或者异步更新?

  2. 连接池配置是否合理?

  3. 是否当时系统磁盘io有问题亦或是raid 卡充放电怎么避免生产时刻重放电?

  4. thread running 代表什么意思?如何配置才能达到最好效果?


能否成为高级DBA,在于我们是否解决了一般人解决不了的问题的能力。


张青林: 首先,我不认为读源码是通向高级MySQL DBA的必备技能, 即使不读源码,也是可以成为高级MySQL DBA的。读源码是为了了解其工作原理,分析其瓶颈,然后从内核上做优化,这是内核研发的必备技能;做为运维人员,只要懂其原理、使用方法,处理线上问题,并配合研发人员对线上进行维护,一样是很高质量的工作,也是“源码”落地的最重要的一部分,所以不可厚此薄彼。 当然,读源码可以更深层次的理解内核的工作机制,有利于学习。


Q4:针对MySQL的不同分支(Oracle官版、Percona、MariaDB),你更看好谁?


韩锋: 我还是看好Oracle官版。 过去几年,官版MySQL的发展有些滞后,导致很多人选择了其它版本,Oracle也看到了这一点。最近一两年,随着MySQL5.6、5.7乃至8.0的推出,官版已经逐渐追上了其它分支版本。依托于Oracle在数据库领域的深厚底蕴,未来官版MySQL的发展更加看好。


如果选择的话,我推荐的顺序是: MySQL社区版->Percona->MariaDB->MySQL企业版。


张青林: 我更看好 Oracle 官方版本, MySQL 被收构之后,Oracle 在MySQL上的投入不断的加强,优化器、InnoDB、复制都推出了很多功能,如GR、多源复制、并行复制、优化器的重构、Undo空间的在线缩小、InnoDB的性能优化、加密表空间等,这些都是解决用户问题的实际行动,Percona的开发也有很大一部分是基于 Oracle MySQL 来做的。


贺春旸: 如果你想与官方MySQL版本尽量保持紧密,并且想获得更好的性能、运维工具和有用的特性,那就选择Percona。如果你觉得MariaDB对服务层的大量修改更快、更优,或者想要更广泛的存储引擎,比如Spider分库分表引擎,那就选择MariaDB。


Q5:MySQL 的认证考试值得考吗?含金量有多大?


杨建荣: MySQL的认证目前只有MySQL OCP,目前和Oracle OCP相比,资料和套路都会少一些。考这个认证,你得明白几件事情:


  1. 认证里的内容和工作的内容还是有一些差别的, 在MySQL里面尤其如此,因为开源的方案非常多,很多优秀的工具不仅仅是官方的;

  2. 考过了认证不一定代表了你是一个数据库专家, 因为实践出真知,很多技能都是在工作中培养和锻炼出来的,考试有分数控制,达标即合格,而工作中99%的努力加1%的错误那就是失败;

  3. 考取认证不能指望企业给你升职加薪 ,如果有的话,那么恭喜你;

  4. 学习的过程 相比考试结果来说,对自己的启示意义更大 ,因为拿到认证是对你学习过程的肯定;

  5. 最后一点MySQL OCP报名费相比Oracle OCP低不少, 价格还算亲民。


贺春旸: MySQL DBA职位门槛较高,通常需要工作经验为3年以上的, 考取认证并不是必须的,其含金量不大。


李季鹏: 认证只是一个门槛 ,一个介绍自己时精炼的关键词,实际上并不能等同于技术水平的真正高低。MySQL认证分为开发与管理,个人建议可以分别视为自己在这两条线路上学习掌握程度的一个检验手段, 无需过分看重,也没有必要完全看轻。


趋势篇

Q1:随着MySQL功能的不断完善,其体积也愈发庞大,你是否担心其未来会类似大型商业数据库,不再是“小而美”的代表?


张青林: 没有这方面的担心呢, 无可否认,编译后的 mysqld 文件越来越大,但并不影响 MySQL 的发展, 主要表现在以下几个方面:


  • MySQL 提供了更多更好的选择,也是对用户的一种负责行为;

  • MySQL的代码质量从5.5、5.6 、5.7的版本迭代中可以明显看到代码质量越来越高,易读性越来越好、模块化越来越强;

  • 专业的测试团队也是质量的保证;


所以,我觉得没有用户会因为多了几十M的空间而嫌弃更好用的版本吧,我觉得 关注的重点不应该是小而美,而是软件质量和易用性。


虢国飞: 主要还是看场景需求 ,对于互联网公司来说,强调的是高可用性,出问题能尽快恢复,不大可能把大把的应用或者数据放到一个篮子里面,否则出问题影响 比较大,恢复起来也会比较复杂缓慢;但因为现在很多分布式部署的DB比较零散,量大了之后维护起来比较麻烦,也可能有部分需求是需要做一些迁移整合的,不过这些只是局部不是整体。


我觉得现在大家更关注的是如何实现自动化运维、集群自动化和动态的扩缩容等方面, 如果能通过技术把运维复杂度降低,管理再大的量其实都不是问题 ,现在很多开源产品也在往自动维护和动态扩缩容这方面攻关了。


贺春旸: 不用担心,您可以切为MariaDB。 只要移除MySQL,然后安装MariaDB。你的所有工具,连接程序都可以正常运行。升级到MariaDB,你也不需要进行一次导出和导入,数据格式MariaDB是兼容的。


Q2:你认为MySQL是否足以担负起企业级应用的数据载体?如果不是,还缺乏哪方面的能力?


杨建荣: 我认为MySQL技术正在走向成熟,但是MySQL的生态已经成熟。


MySQL从早期的发展至今,推出的解决方案非常多,从MySQL 5.7,8.0里面还是可以看到很多它在功能性、高可用、性能等方面都在发力,很多功能和Oracle很相似,都是一个逐步完善的过程,MySQL的使用群体和社区决定了它现在的高度,而且绝大多数的互联网公司都在使用MySQL技术,所以 作为企业级应用是完全可以的。


但是现在的互联网行业对于MySQL的青睐,很多不在于MySQL单机能够支撑的性能,而是在于灵活扩展的架构,对于MySQL的使用,不再是集中式、共享式的方式,会做拆分、分布式等。


值得一提的是,很多大厂对于MySQL的技术把控力已经走在了世界前沿,而从技术架构的角度来看, 现在是更倾向于把MySQL用得更纯粹,更简单,而不是大量的运算和压力都放在数据库侧, 这是MySQL生态带来的一大优势,也让更多企业级应用可以落地。


杨奇龙: 显然MySQL已经足够成熟来承担企业级应用的数据载体,这点 最近几年各个电商的购物节,每秒处理的交易笔数和数据量足以回答这个问题。


当然我们的业务需求是多种多样的,除了常见的OLTP业务,还有其他OLAP 业务,海量日志类型的需求。在这方面MySQL 多少显得不足以适应业务需求。


另外就是因为MySQL不能支持在线的扩容、HA,必须借助第三方工具来做,不过好在5.7版本推出MGR ,Percona推出的PXC在很大程度上缓解了HA 方面问题。


贺春旸: 主要是官方缺少分库分表的解决方案。 MariaDB官方提供了Spider引擎作为解决方案,但目前还没有正式GA。所以涉及非事务强一制的业务,如LOG信息等,通常是放入MongoDB里,通过其自身的自动分片功能实现对数据的扩容。


Q3:你是如何看待数据库中间层(例如Cobar、Atlas等)与数据库的关系?


杨奇龙: 准确一点的说是数据库中间件,它们是 数据库服务的一种辅助 ,借助数据库中间件,数据库可以具有分布式、读写分离、负载均衡、连接池、访问控制等等功能,数据库业务系统上具备更强大的功能和支撑能力。


中间件在一定程度上解决了单机数据库系统容量方面的限制, 可以通过读写分离方式或者水平拆分的方式整体提升数据库的吞吐量。


另一方面中间件在数据分布上利用shardingkey将数据独立开, 对于聚合类的需求是一种障碍。还有当前的数据库中间件对于跨库分布式事务很难保证不同数据库分片的数据一致性问题。这些都需要开发在使用中间件的时候注意下规避。


虢国飞: 中间件目前在MySQL数据库横向扩容方面作用很明显,当然不止局限于此,我们公司的DAL中间件就做了很多的功能,比方连接池、分片路由、限流、熔断、加密保护等,这些功能不仅能支持数据库的横向扩容,还有效保障了数据库的安全,所以说 中间件和数据库目前是很多公司的 黄金搭档。


韩锋: 这些中间层产品,是为了弥补数据库的功能缺陷或性能、容量不足才出现的。在一定阶段,确实解决了企业的实际需求。当我们也看到,其对应用开发还无法做到完全透明,整体架构的复杂度是提高了。 从长期来看,分布式数据库势必会从根本解决上述问题,到时这些中间层产品也就没有使用意义了。


Q4:你所在的公司是否有成熟的MySQL运维平台?如果是,DBA在传统运维类工作逐步萎缩的情况下,选择什么方向来发展?


虢国飞: 我觉得一个公司的运维平台发展基本有几个阶段:


  1. 首先是大家使用开源产品







请到「今天看啥」查看全文