转自:https://blog.csdn.net/xielingshao/article/details/77840101mysql
随着MySQL地位爆炸式的提高, MySQL DBA的市场缺口日益剧增,优秀的MySQL DBA正在成为各个互联网公司抢手的人才。然而,需求来了,问题也来了,如何快人一步提升自身技能,让本身在日益激烈的技术挑战中不断增值、脱颖而出?算法
今天,咱们将锁定MySQL数据库,经过韩锋、虢国飞、杨奇龙、杨建荣、张青林、李辉、贺春暘、李季鹏等8位MySQL专家的经验之谈,为想从事MySQL DBA的同窗们答疑解惑,指明一条修炼的路子。sql
相关参考修炼书目:数据库
《高性能MySQL(第3版)》
《MySQLDBA修炼之道》
《MySQL王者晋级之路》
《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践》
《MySQL技术内幕++InnoDB存储引擎(第二版)》
《MySQL5.7-官方文档》编程
认真读完本文,你能够了解到:缓存
1、选择篇安全
一、MySQL的流行缘由及从业前景性能优化
二、MySQL DBA的薪资缘何广泛高于Oracle DBA架构
三、我的如何完成Oracle向MySQL的转型?并发
2、学习篇
一、从初级到高级的MySQL DBA学习路线及学习资料推荐
二、源码是否为高级MySQL DBA的必备技能?
三、MySQL不一样分支的选择讨论
四、MySQL认证考试的含金量
3、趋势篇
一、随着功能的不断完善,MySQL还会是“小而美”的表明吗?
二、MySQL目前还缺少哪方面的能力,是否足够成熟?
三、如何看待数据库中间层与数据库的关系?
四、传统运维逐步萎缩下,DBA应选择什么方向发展?
4、将来篇
一、数据库云化会对传统DBA带来什么样的冲击?
二、如何看待分布式数据库的将来前景?
三、愈来愈多的DBA正在或将从事DevOps类工做,你的见解是?
Q1:你认为MySQL流行的主要缘由是什么?从长远角度来看,从业前景如何?
一、流行缘由
虢国飞:综合来看,MySQL的流行是偶然中的必然。缘由主要有如下三点:
二、就业前景
李辉:目前来看,MySQL DBA的日子仍是很滋润的,在可预见的3-5年内,MySQL在互联网行业的地位仍没法取代,对DBA的需求量仍然很大,特别是中高级DBA。但从长远角度来看,从业人员也要多涉猎其它关系型数据库以及NoSQL、Devops、云计算等技术,现代社会惟一不变的就是变化,不断学习、拥抱变化才能保证本身不被将来社会淘汰。
Q2:如何看待当前MySQL DBA的薪资广泛高于Oracle DBA的现象?若是想从事DBA,选哪一个数据库更好?
一、MySQL DBA高工资的缘由
杨建荣:由于是和Oracle来对比,能够分为几个方面来看:
杨奇龙:对于薪资高这点,我以为要从两方面看:
二、从事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转型,不仅仅是一我的的学习过程,也是一个从开发到运维的磨合过程。
Q1:从初级成长到高级,有推荐的MySQL学习路线吗?
杨奇龙:DBA 是一个“复杂”的工种,要成为高级/资深MySQL 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飙高?要懂得去思考下面四个问题:
可否成为高级DBA,在于咱们是否解决了通常人解决不了的问题的能力。
张青林:首先,我不认为读源码是通向高级MySQL DBA的必备技能,即便不读源码,也是能够成为高级MySQL DBA的。读源码是为了了解其工做原理,分析其瓶颈,而后从内核上作优化,这是内核研发的必备技能;作为运维人员,只要懂其原理、使用方法,处理线上问题,并配合研发人员对线上进行维护,同样是很高质量的工做,也是“源码”落地的最重要的一部分,因此不可厚此薄彼。 固然,读源码能够更深层次的理解内核的工做机制,有利于学习。
Q4:针对MySQL的不一样分支(Oracle官版、Percona、MariaDB),你更看好谁?
韩锋:我仍是看好Oracle官版。过去几年,官版MySQL的发展有些滞后,致使不少人选择了其它版本,Oracle也看到了这一点。最近一两年,随着MySQL5.六、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相比,资料和套路都会少一些。考这个认证,你得明白几件事情:
贺春旸:MySQL DBA职位门槛较高,一般须要工做经验为3年以上的,考取认证并非必须的,其含金量不大。
李季鹏:认证只是一个门槛,一个介绍本身时精炼的关键词,实际上并不能等同于技术水平的真正高低。MySQL认证分为开发与管理,我的建议能够分别视为本身在这两条线路上学习掌握程度的一个检验手段,无需过度看重,也没有必要彻底看轻。
Q1:随着MySQL功能的不断完善,其体积也愈发庞大,你是否担忧其将来会相似大型商业数据库,再也不是“小而美”的表明?
张青林:没有这方面的担忧呢,无能否认,编译后的 mysqld 文件愈来愈大,但并不影响 MySQL 的发展, 主要表如今如下几个方面:
因此,我以为没有用户会由于多了几十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在传统运维类工做逐步萎缩的状况下,选择什么方向来发展?
虢国飞:我以为一个公司的运维平台发展基本有几个阶段:
另外,其实不止是DBA,整个运维体系都在作转变,传统的玩法效率低、重复工做多,已经不适用互联网公司高速度、快节奏的发展了,因此说DBA工做内容须要转变,思想也须要转变,应该向着如何快速交付、提升数据库总体稳定性、高效率运维、打造适合更多适合业务须要的数据库产品方案,甚至给研发输出数据架构方案等这些方面发展,开始往前走,这样价值能更大(传统DBA每每是沉在最后面,领业绩的时候没有人影,只有出问题的时候才出来背锅)。
韩锋:公司目前有数据库运维平台,固然尚未覆盖全部运维需求,但也大幅度减轻了DBA的工做负担。传统运维类的工做,确实在不断萎缩之中。在这种状况下,DBA的发展可朝如下方向努力:
张青林:腾讯有很成熟的MySQL运维平台,这简化了DBA 的运维服务,提升了DBA的幸福生活指数。DBA 的运维工做较以前会少一些,可将多余的时间投入到MySQL其它的相关工做当中,转向研发型运维,如:
只要是和数据库相关的,本身又有想法的,均可以和研发一块儿讨论并尝试。
Q1:你认为将来云会成为数据库的主要载体吗?若是是,它会对传统DBA带来什么样的冲击?
虢国飞:我的认为使用云是一种趋势,它能在资源交付、稳定性和成本方面为企业提供很好的支撑,随着云产品的不断完善,目前已经能够知足大部分中小企业的需求,中小企业彻底能够省心省力地使用云(不用关心资源和维护,而专心作业务)。
不过如今公有云产品对一些要求比较高、量大的企业还不是特别合适(将来也许也不是问题);所以DBA也不要再固守传统的城池,应该放开心态来面对这种变化,更多的把重心往上面所说的方向上转,作数据架构、存储方案,这样价值更大。
韩锋:将来云必定会成为数据库的主要载体。人们能够像使用水、电同样,使用数据库服务。传统DBA,从事的基础运维类工做基本不复存在。DBA,要么继续深研数据库技术,在云服务商或乙方服务类公司发展;要么倾向于架构、开发、优化方向发展。
李季鹏:我的理解,公有云为成为初创企业和互联网企业的主要使用者;传统企业从各个角度考虑只会考虑私有云或者混合云方案。这样的场景,与之前小企业不须要DBA,大企业DBA忙不过来的基本状况其实没有本质区别。引入云,DBA须要及时更新知识储备,以应对各类新技术引入的挑战。
Q2:你是如何看待分布式数据库的将来前景?将来哪些场景会优先考虑此类方案?
虢国飞:自从Google Spanner F1 发布后,分布式数据发展很快,跟随者国外有CockroachDB,国内有TiDB,二者都发展比较火,从原理上来说也确实能解决很多业务场景的痛点,如数据一致性要求高(多副本分布式协议保障一致)、数据容量很大、动态扩缩容、容灾要求高、跨机房、跨地域的部署需求等,这类需求通常是对一些大公司、大数量和数据质量要求很高的公司才会有,通常中小公司也玩不起来,由于分布式数据库部署的成本仍是比较高的(通常最小配置就是好几台机器),并且运维难度也比较大(没懂行的人出问题基本搞不定),目前不少分布式数据库产品在性能和稳定性方面还须要进一步通过验证,一旦技术稳定后,应该仍是比较有市场的。
韩锋:很是看好其发展前景,特别近两年来,已经有不少公司作了这方面的尝试。随着分布式思想、算法的成熟及硬件技术的发展,将来分布式数据库将逐步成熟、完善,成为主流的方案。做为早期尝试,可在数据安全要求相对较低的OLAP领域尝试使用。
Q3:在不少公司,DBA正在愈来愈多地从事DevOps类工做,你的见解是?
杨奇龙: