在MySQL DBA面试中我应该问什么?


9

我是一名软件开发人员,正在帮助我的团队雇用MySQL DBA。我们面临的核心挑战是:

  • 由于休眠,查询和性能变慢。

  • 数据库管理(备份,调整,补丁,安全性)。

  • 由于来自新数据源的数据增加和旧数据的积累,因此具有可伸缩性。

  • 我们计划在将来开始数据挖掘和数据仓库。不确定如何,但这就是方向。

通常,在编程案例中,我们要求开发人员为面试构建一些东西,但是以相同的方式进行DBA面试有点困难。

您能对面试提供一些建议吗?


1
似乎这样对Programmers.Stackexchange可能更好,但是我是这个社区的新手,所以请不要相信我的话
DForck42 2011年

有人请保护这个问题。这些都是很好的答案!
RolandoMySQLDBA 2011年

哇!您设法找到一个MySQL DBA?做得好!
乔纳森(Jonathan)

@RolandoMySQLDBA下次标记它;)
jcolebrand

Answers:


11

不是完整的清单,而是我会尝试介绍的粗略清单。这还取决于他们将是第一个“真正的” DBA还是在DBA团队中。是由DBA负责计算机,还是仅由数据库负责。等等

  • 应该使用什么RAID配置
  • 数据库的备份策略。
  • MySQL特定的事物,例如MyISAM和InnoDB之间的差异
  • 备份策略和恢复
  • 让他们执行一些SQL查询和一些查询优化(即使在使用休眠模式时也可以使用解释等。有时绕过休眠模式以获得性能是很好的)
  • 我有提到备份策略吗
  • 为了实现可伸缩性,DBA应该了解不同的复制模式(RBR,SBR,混合模式复制,复制维护,例如观察复制滞后和binlog维护)
  • InnoDB调整
  • DB正在写入哪种文件(例如,ibdata和日志文件)以及如何排列它们(例如,每个表一个ibdata文件,将它们在不同的分区上移动,InnoDB压缩)
  • 讨论监视工具。您正在使用什么,他们在使用该工具或类似工具方面有经验吗?
  • 我还将研究iostat / memstat / vmstat /等系统工具,无论您的操作系统提供什么。给他们一些负担的系统,让他们找到原因
  • 也许讨论MySQL备份中的问题,尤其是还原;-)

我确定这里的其他人可以扩展此列表


嗨,约翰内斯(Johannes);)我喜欢备份/还原焦点-确实,这很重要。希望看到有人给我同意的MyISAM / InnoDB比较。
Morgan Tocker 2011年

MySQL和非MySQL问题的好答案。+1 !!!
RolandoMySQLDBA 2011年

竖起大拇指!您可以在列表中添加有关备份+还原策略的信息!;-)
玛丽安(Marian)

6

在为Percona的面试过程做出贡献之后,我写了些关于此的文章

我认为,要评估某个人,您必须尝试使他们做他们在常规日常活动中会做的事情。随机问题,例如“ MySQL中的串行数据类型是什么?” 或诸如“为什么人孔都圆?”之类的情报问题?没有做到这一点。

您还想确保对每个人都进行相同的测试。如果您进行的是不限成员名额的谈话,那么更自信和(稍有操纵性)的人会脱颖而出,因为他们可以巧妙地绕过您的问题,并将其变成易于回答的问题。您不会总是意识到何时会发生这种情况,但是它通常包含诸如“当我以DBA身份开始时,我们有2MB的RAM,并使用了磁带..等等等等等等”:P

话虽如此,这是我的标准问题清单:

  • 描述MySQL复制的工作过程?
  • ACID的D成分实际上意味着什么?
  • innodb_flush_method = O_DIRECT会发生什么变化?(请注意这一点:对此的普遍理解通常是错误的。)
  • 假设我编写了一个查询,例如“ INSERT INTO my_table(a,b)VALUES(1,2)”。尽可能详细地向我描述MySQL内部发生的情况。

对于类似随机琐事的问题没有正确测试能力的问题,请+1。
德里克·唐尼

3
如果您要对他们的日常工作进行测试,那将是“开本”吗?我的意思是,在我的本科课程中,一些老师坚持要求您记住所有内容,而其他老师则是切合实际的-在现实世界中,您有参考手册可供参考;重要的部分是知道从哪里找到答案,有时甚至比以为自己知道答案还要错。(在某些情况下,情况会发生变化,因此检查文档中的特定软件版本很重要)
Joe

+1为打开的书。如果您必须做已关闭的书,则可能表明您的问题是琐事。
Morgan Tocker 2011年

阅读您的文章和答案。哇!好问题。我很乐意飞在墙上,看着当有人问这样的问题时会发生什么。我本人面试候选人时应该使用这些问题。谢谢你,很开心!+1 !!!
RolandoMySQLDBA 2011年

6

我建议您也查看一些有关DBA采访的既定清单:

  • 十大SQL Server DBA面试问题 -由我们自己的Brent Ozar撰写

    • 最喜欢的问题:
    • “您能给我其他不在您公司的DBA和开发人员参考吗?”
    • “项目经理需要一个新的SQL Server。您问她什么?”
  • 初级DBA面试问题 -由我们自己的Thomas LaRock

    • 最喜欢的问题:“如果我要求您学习如何更快地进行查询,您会去哪里?”
  • 数据库筛选问题 -Grant Fritchey

    • 最喜欢的问题:“您是DBA。电话响了。其中一个用户在通话中。他们说:“数据库运行缓慢。” 然后他们挂断电话。您怎么办?”

他们都是出色的SQL Server编写者。我知道某些问题可能是面向SQL Server的,但大多数问题并非如此,可以在一般DBA面试中使用。


1
您能否从此处的每个列表中添加自己喜欢的问题?这将为该答案带来更多价值。
Nick Chammas

我的主要动机也是看应该如何测试这些主题(即询问复制或为他们设置测试系统)。我会仔细阅读列表,我想一般的DBA级别的问题都找不到适合我的特定MySQL候选对象。
geoaxis 2011年

1
@Nick:感谢您的来信,并更新了答案。Geoaxis-无论哪种口味的优秀DBA都能抓住MySQL的复杂性。例如:雇用Java开发人员时,您只问严格的Java技术库问题还是一般的编程问题?
玛丽安

5

尽管我同意许多看似随机的访谈问题(例如,人孔盖住了一个问题)并没有那么有用……(除了对于工业设计师而言,而且仅针对一种情况)。

一旦您克服了其中许多琐事方面的内容,它们就会成为您知道答案的东西,因此您必须描述如何找到答案。或不。例如:

  • 编造合理的内容和/或尝试胡说八道。(可能对销售和营销有用吗?在其他任何领域,请勿雇用。)
  • 根据其他信息估算
  • 解释如何获取解决问题所需的必要信息

...等等。

当我过去负责招聘过程时,我会尝试进行一次完全不定期的5到15分钟的电话面试(只需打电话给他们,因为他们可以给您几分钟的时间...并非所有人都可以,因为有些人正打算离开工作)……只是为了评估我认为他们对履历表的推崇。

例如,当我们招聘一名高级PL / SQL程序员时,我会问他们PL / SQL块的组成部分是什么。这些天来,这是Google的头等大事……2003年时并非如此。我们采访的大多数人以前可能都使用过Oracle,他们可能已经为Oracle编写了SQL ...但是,如果您不能给我任何提示,您知道PL / SQL块是什么样子,您不适合从事高级PL / SQL程序员工作。

...

话虽这么说,我面对面采访时最喜欢的问题是:

星球大战还是星际迷航?

在某种程度上,您会看到他们如何处理没有最佳答案的情况,如果他们的回答是外交上的,或者他们认为是不合常规的(例如,Who博士或Firefly是有效的答案)。我目前在哪里工作(空间物理实验室),除非您是外国人,否则您从未见过任何一个失败。说您都不喜欢,并说明为什么有充分理由是通过的。过多顾及任何一个可能仍然是失败的(因为没人愿意和个人一起工作)


重要的是要提出一些个人问题,以查看它们是否适合团队。+1
德里克·唐尼

@DTest:但是您必须谨慎对待个人问题……很多类别的问题都是您不允许提出的,至少在美国是不允许的:eeoc.gov/facts/qanda.html
Joe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.