当前位置: 首页 > 科技观察

十道牛逼的MySQLDBA面试题(附答案)

时间:2023-03-15 00:27:54 科技观察

DBA是数据可用性、性能和安全性的重要组成部分。获得一名优秀的DBA是任何公司为确保其数据库操作继续正常工作所能做的最重要的事情之一。那么如何找到一个好的DBA呢?在这篇文章中,我将向您展示我在面试DBA候选人时喜欢问的一些问题。性能很关键,那么这位候选人是否知道MySQL是如何调优和优化的?1.首先:您会推荐哪些最常见的性能优化?这是关于概念性知识的,通常是一个开放式问题。他们是否考虑扔硬件和增加资源?这是最简单的解决方案,但通常不是正确的解决方案。如果数据库设计不当,性能通常会受到限制。他们会谈论它吗?我希望人们讨论最佳选择并决定哪些变量或修复最有意义。我从客户那里看到的简单答案是调整单个变量,如“innodb_dedicated_server”,这当然有帮助,因为它是多个配置的快捷方式,但如果你没有正确理解它,可能会造成一些不必要的伤害(比如很多不必要的重做日志文件)。我正在寻找能够理解快速问题和长问题之间区别的人。2.在IObound系统中,为了更好地利用IO,你需要调整哪些主要参数?磁盘IO是任何数据库中最慢的部分,任何DBA都必须理解这个概念。简单的答案总是添加更多的内存,但这不仅仅是关于缓冲池。候选人是否了解影响IO的其他变量和数据库内部结构?比如他们懂redologs,flushes,io_capacity等等,他们能看懂他们干什么吗?这些变量的组合将减少IO依赖,同时延长SSD寿命。3.你会接到电话说数据库慢。你做什么工作?你如何识别慢查询?优化查询的最佳策略是什么?查询优化是每个DBA都必须了解的活动。即使一个数据库在99%的时间里看起来是快速和高性能的,一个恶意或缓慢的查询也可能导致整个应用程序崩溃。在这里,我们不仅要查看查找慢速查询的过程,还要查看调整和修复它的过程。我们需要了解导致查询缓慢的原因,例如索引、糟糕的SQL编写技巧等。幸运的是,我们有可以识别坏人并帮助优化流程的工具。候选人决定使用的工具不如他们经历的过程重要。我们正在寻找诸如识别缺失索引、错误主键、非常大的表问题、模式设计等的能力。4.假设您需要将MySQL服务器的流量增加10倍。您的可扩展性策略是什么?读取的缩放比例是否与写入的缩放比例相同?这里有很多可扩展性策略。您不仅要寻找特定的技术或过程,还要寻找它们背后的原因。需要讨论和深入研究的关键事项:添加副本以卸载流量、设置负载均衡器、增加可用硬件、分片等。所有这些都是有效的策略。真正的问题是候选人是否理解它们以及何时应该和不应该使用它们?每个DBA都必须构建并确保他们的数据库系统在需要时可用。因此,了解您的数据库可用性策略至关重要。必须提出问题来衡量他们的理解:5.你如何解释异步复制滞后?为什么有问题?你会怎么解决?异步复制仍然是一个非常重要的话题,虽然性能随着MySQL的每个版本和修改而不断提高,但我仍然帮助很多客户解决复制设置和延迟问题。许多公司将副本用于报告、备份和高可用性,因为我们希望我们的副本尽可能保持最新。好消息是,这也为候选人提供了另一个跳出框框思考的机会,因为异步复制延迟可能会受到数据库设计问题的显着影响,例如无主键、长时间运行的查询、选择更新等。6.他们能解释异步和同步复制之间的区别?他们什么时候会选择一个而不是另一个?当然,您可以在MySQL中使用几种不同类型的异步复制(MySQLGTID、MariaDBGTID、TungstenReplicator)和同步复制(PerconaXtraDBCluster、MySQLGroupReplication),因此对它们的一般了解有助于评估他们的技能。虽然这里没有100%正确的答案,但了解选择一种解决方案而不是另一种解决方案的决策驱动因素是什么很重要,例如性能、一致性、可用性等。7.Galera所需的最小节点数是多少基于解决方案?添加更多节点的优缺点是什么?MySQL世界中有两种主要的集群解决方案。基于Galera的复制,例如PerconaXtraDBCluster,以及基于GroupReplication的集群,例如InnoDBCluster。这个问题的关键是要知道Galera是为一致性和可用性而设计的,而不是为了编写可扩展性。理解这些差异很重要,因为“更多写入者意味着更多写入”的想法很常见,就好像添加更多写入器节点可能会增加集群的写入容量一样。当然,你需要确保候选人不仅知道如何解决性能问题和设置高可用性,还需要了解一些基本的数据库操作和技术。至少询问一个关于安全、备份和托管(云或非云)的问题是确保您了解基础知识的好方法。8.请描述您推荐的备份策略。您将使用什么工具以及如何使用?了解备份的重要性很重要。我正在寻找可以向我介绍他们的经验并告诉我他们认为什么是良好且安全的备份策略的人。当他们说话时,我会问问题,看看他们是否理解他们正在运行的设置的局限性或好处。我希望他们能够掌握不同的备份选项(物理的、逻辑的)以及他们可以推荐的备份策略(每日、每周、每月、完整、增量等)。当然,我对人们如何确保他们的备份“良好”非常感兴趣。并非所有人都同意将恢复测试视为备份策略的一部分。9.在部署MySQL时,您遵循哪些基本的安全策略?这一次,同样没有标准答案,但毫无疑问,DBA必须保护公司的数据。需要注意的一些事项:强密码、仅从本地主机进行root访问、删除没有密码的用户、删除非管理员用户的SUPERpriv、限制用户访问自己的数据库/表、加密数据等。10.请解释RDSMySQL和Aurora之间的主要区别。您什么时候会推荐一种解决方案而不是另一种?毫无疑问,云已经改变了我们运行数据库的方式。候选人是否对AWS上前两个MySQL选项之间的区别有基本的了解?他们不一样,他们知道吗?了解利弊是至关重要的。虽然RDS提供了一种开箱即用的异步复制设置的简单方法,但它需要一些操作活动来确保环境的健康,即数据一致性检查、在主节点发生故障时处理故障转移等。另一方面,Aurora通过以更高的成本和一些额外的写入开销确保一致性和可用性来解决操作部分,因此它可能无法在高流量环境中很好地扩展。