公司招聘MySQL DBA,自个儿也面试了10个以上的2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点

公司招聘MySQL DBA,自己也面试了10个以上的2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点。

公司招聘MySQL DBA,也面试了10个2年MySQL DBA工作经验的朋友,谈谈自己的心得,欢迎大家指点。


1    2年MySQL DBA经验

      其中许多有水分,一看到简历自我介绍,说公司项目的时候,会写上linux系统维护,mssql server项目,或者oracle data gard项目,一般如果有这些的话,工作在3年到4年的话,他的2年MySQL DBA管理经验,是有很大的水分的。刚开始我跟领导说,这些不用去面试了,肯定mysql dba经验不足,领导说先面面看看,于是我就面了,结果很多人卡在基础知识这一环节之上,比如:

(1)有的卡在复制原理之上

(2)有的卡在binlog的日志格式的种类和分别

(3)有的卡在innodb事务与日志的实现上。

(4)有的卡在innodb与myisam的索引实现方式的理解上面。

         .........

         关于基础知识考查点,请参考我整理的基础面试点总结: http://blog.csdn.net/mchdba/article/details/13505701

个人觉得如果有过真正的2年mysql专职dba经验,那么肯定会在mysql的基本原理上有所研究,因为很多问题都不得不让你去仔细研究各种细节,而自己研究过的细节肯定会记忆深刻,别人问起一定会说的头头是道,起码一些最基本的关键参数比如Seconds_Behind_Master为60这个值60的准确涵义,面试了10+的mysql dba,没有一个说的准确,有的说不知道忘记了,有的说是差了60秒,有的说是与主上执行时间延后了60秒。


2   对于简历中写有熟悉mysql高可用方案

    我一般先问他现在管理的数据库架构是什么,如果他只说出了主从,而没有说任何ha的方案,那么我就可以判断出他没有实际的ha经验。不过这时候也不能就是断定他不懂mysql高可用,也许是没有实际机会去使用,那么我就要问mmm以及mha以及mm+keepalived等的原理实现方式以及它们之间的优势和不足了,一般这种情况下,能说出这个的基本没有。



3   对于简历中写有批量MySQL 数据库服务器的管理经验

     这个如果他说有的话,我会先问他们现在实际线上的mysql数据库数量有多少,分多少个节点组,最后问这些节点组上面的slow log是如何组合在一起来统计分析的。如果这些他都答对了,那么我还有一问,就是现在手上有600台数据库,新来的机器,Mysql都安装好了,那么你如何在最快的时间里面把这600台mysql数据库的mysqld服务启动起来。这个重点在于最快的时间,而能准确回答出清晰思路的只有2个人。



4   对于有丰富的SQL优化的经验
    首先问mysql中sql优化的思路,如果能准备说出来,ok,那么我就开始问explain的各种参数了,重点是select_type,type,possible_key, ref,rows,extra等参数的各种值的含义,如果他都回答正确了,那么我再问file sort的含义以及什么时候会出现这个分析结果,如果这里他也回答对了,那么我就准备问profile分析了,如果这里他也答对了,那么我就会再问一个问题,那是曾经tx问我的让我郁闷不已的问题,一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录。

关于explain的各种参数,请参考:http://blog.csdn.net/mchdba/article/details/9190771

5   对于有丰富的数据库设计经验
     这个对于数据库设计我真的没有太多的经验,我也就只能问问最基础的,mysql中varchar(60) 60是啥含义,int(30)中30是啥含义? 如果他都回答对了,那么我就问mysql中为什么要这么设计呢? 如果他还回答对了,我就继续问int(20)存储的数字的上限和下限是多少?这个问题难道了全部的mysql dba的应聘者,不得不佩服提出这个问题的金总的睿智啊,因为这个问题回答正确了,那么他确实认认真真地研究了mysql的设计中关于字段类型的细节。至于丰富的设计数据库的经验,不用着急,这不我上面还有更加厉害的dba吗,他会搞明白的,那就跟我无关了。


6  关于mysql参数优化的经验。
    首先问他它们线上mysql数据库是怎么安装的,如果说是rpm安装的,那么我就直接问调优参数了,如果是源码安装的,那么我就要问编译中的一些参数了,比如my.cnf以及存储引擎以及字符类型等等。然后从以下几个方面问起:
(1)mysql有哪些global内存参数,有哪些local内存参数。
(2)mysql的写入参数需要调整哪些?重要的几个写参数的几个值得含义以及适用场景,比如innodb_flush_log_at_trx_commit等。
(3)读取的话,那几个全局的pool的值的设置,以及几个local的buffer的设置。
(4)还有就是著名的query cache了,以及query cache的适用场景了,这里有一个陷阱,就是高并发的情况下,比如双十一的时候,query cache开还是不开,开了怎么保证高并发,不开又有何别的考虑?

7  关于事物隔离级别。
这个最起码你得知道那4个隔离级别的名字吧,以及之间的区别,还有你当前自己数据库里面设置的是哪个级别吧,可惜的是面试了那么多,能准备想都不用想的回答出的就只有一个,而且他只说出了前3个级别的名字。
关于事务隔离级别简单资料,请参考:http://blog.csdn.net/mchdba/article/details/12837427

8  关于熟悉mysql的锁机制。
那么gap锁,next-key锁,以及innodb的行锁是怎么实现的,以及myisam的锁是怎么实现的等,可惜能准备说出这些的只有一个mysql dba。

9  关于熟悉mysql集群的。
我就问了ndbd的节点的启动先后顺序,再问配置参数中的内存配置几个重要的参数,再问sql节点中执行一个join表的select语句的实现流程是怎么走的?ok,能回答的也只有一个。
关于mysql集群入门资料,请参考:http://write.blog.csdn.net/postlist/1583151/all

10  关于有丰富的备份经验的
就问mysqldump中备份出来的sql,如果我想sql文件中,一行只有一个insert .... value()的话,怎么办?如果备份需要带上master的复制点信息怎么办?或者xtrabackup中如何做到实时在线备份的?以及xtrabackup是如何做到带上master的复制点的信息的? 当前xtrabackup做增量备份的时候有何缺陷?
        能全部回答出来的没有一个,不过没有关系,只要回答出mysqldump或者xtrabackup其中一个的也可以。

11 关于有丰富的线上恢复经验的
就问你现在线上数据量有多大,如果是100G,你用mysqldump出来要多久,然后mysql进去又要多久,如果互联网不允许延时的话,你又怎么做到恢复单张表的时候保证nagios不报警。如果有人说mysqldump出来1个小时就ok了,那么我就要问问他db服务器是啥配置了,如果他说mysql进去50分钟搞定了,那么我也要问问他db机器啥配置了,如果是普通的吊丝pc server,那么真实性,大家懂得。
然后如果你用xtrabackup备份要多久,恢复要多久,大家都知道copy-back这一步要很久,那么你有没有办法对这一块优化。


.............

先想到这么多,可能有朋友就好心提醒了,你mysql dba招聘好了没有,如果没有招聘好,万一人家看到这里,全部准备好,那不相当于作弊啊?
我想说的是,我只是说出了想问的知识点,我可没有说答案啊,如果能自己找出所有准确答案的,那也挺不错了,至少这探索精神是有的,不过就算过了我这一关基础知识面试,别忘了,上面还有比我更厉害的dba,他会继续KO你的,他问的东西就比较深入了,要过那一关挺不容易的,要不然刚开始一个月他面试了10多个全部被他pass了,然后他说好麻烦啊先让我把把关把不合格的pass掉,让他省点时间,哈哈,所以我不用担心的。

当然可能是我们公司也比较弱吧,毕竟目前不能跟ali,tx,baidu等真正的mysql dba团队相比,也许真正的基础知识扎实的mysql dba已经投奔它们而去了,在此呼喊下,我们这些互联网公司也是有追求的,特别是在招聘mysql dba这一块,对基础知识很注重的。

最后欢迎大家拍砖,我这边已经准备好taobao网购了一个钢头盔,小弟我还可以撑得住啊,赫赫,玩笑了,大家有过这方面面试别人或者去应聘的经验的,欢迎指点啊!


11楼hkfxp2小时前
感谢分享这么多真实的感受,让这些入门的或者说将要入门的人明白基础和细节的重要性!
Re: mchdba2小时前
回复hkfxpn有时候,细节决定一切。
10楼cuiwei10265228293小时前
不过现在面试,mysql考察的也挺全面的、、我得恶补 一下了 = =
9楼cuiwei10265228293小时前
楼主,我是一个程序员,要不要也要懂得这些呢???
Re: mchdba3小时前
回复cuiwei1026522829n能懂做好,不懂也不是很重要
8楼ccf198810303小时前
呵呵,对MySQL不了解,以前只用过MS SQLServer,面试中遇到一些简单的查表筛选的SQL问题都把我难住了,看来以后得多多看书和编程实践了,基础很重要!
Re: mchdba3小时前
回复ccf19881030n加油
7楼cuiwei10265228294小时前
楼主,感觉你是mysql的行家,,,谢谢你的文章!!
Re: mchdba4小时前
回复cuiwei1026522829n老菜鸟而已,欢迎一起交流
6楼tengyunjiawu_com昨天 21:58
看了你说的这些,说句实在话:n全是狗屁,一点意义没有,认真找点资料一个小学生2小时就能倒背如流!nn这种工作首先是人品,其次是责任心和稳定的心态,说到技术含量我觉得完全没有!nn你们领导叫你面试完全是一个错误!
Re: mchdba昨天 22:05
回复tengyunjiawu_comn囧了
5楼maco_wang昨天 17:53
谢谢分享!
Re: mchdba昨天 21:01
回复maco_wangn谢谢关注。
4楼suannai0314昨天 16:32
您的文章已被推荐到博客首页和个人页侧边栏推荐文章,感谢您的分享。
Re: mchdba昨天 16:53
回复suannai0314n这样有啥好处?
Re: suannai0314昨天 17:24
回复mchdban阅读量会高,会有更多的人看到你的博客
Re: mchdba昨天 17:52
回复suannai0314n嗯,谢谢啊
3楼chenkun1998昨天 16:31
mark,基础太重要了,不仅仅是mysql
Re: mchdba昨天 16:31
回复chenkun1998n基础很重要,有时候,基础决定了你能爬升的高度,万丈高楼平地起嘛。
2楼linwaterbin昨天 14:03
1】Seconds_Behind_Master,这就一炕货,搞清它没多大意义,小心还被反咬一口n4】翻页翻到5w,这题应该是要考察limit分页,提出我的方案:(延迟关联)先利用覆盖索引查询返回需要的主键,再利用这些主键关联原表获取所需要的行,不知道你的方法?n10】当前xtrabackup做增量备份的时候有何缺陷?
Re: mchdba昨天 14:17
回复linwaterbinn1] 这个值理解错误了,就足以证明对复制没有深入研究过。n2] 我的思路与你相同,就是找到主键后,tid>23450009 .... limit 200,不过被tx的人BS了,不知道是否还有更好的方法。n3] 如果在增量过程中表结构变更,你恢复到增量的那一天你怎么办?[貌似新的版本已经解决了这个问题,不过线上用的很少,我也是仅仅测试过]
Re: linwaterbin昨天 14:54
回复mchdban难道你认为Seconds_Behind_Master可信赖?
Re: mchdba昨天 16:30
回复linwaterbinn不知道你是否有更好的办法?方便share下。
Re: mchdba昨天 16:31
回复linwaterbinn目前5.5的实际版本来说除了手动checksum数据检查主从数据一致性外,这个Seconds_Behind_Master确实是最重要的一个参考点。
1楼cheungmine昨天 23:35
任何一个有责任心的程序员,加上google, 多做试验,解决你这些问题都是小case. 这没什么值得炫耀的.无知的人才喜欢炫技.
Re: mchdba昨天 13:19
回复cheungminen受教了,责任心很重要。“责任心”