10 个非常棒的 MySQL DBA 面试题(附答案)

在这篇文章中,我将向您展示我在面试 DBA 候选人时喜欢问的一些问题。

1. 推荐哪些最常见的性能优化

        这是关于概念性知识的,通常是一个开放式问题。他们是否正在考虑扔硬件和增加资源?这是最简单的解决方案,但通常不是正确的解决方案。如果数据库设计不佳,性能通常会受到限制。他们会谈论这个吗?我希望人们讨论最佳选择,并决定哪些变量或修复最有意义。我在客户那里看到的简单答案是调整像“innodb_dedicated_server”这样的单个变量,这当然有帮助,因为它是几种配置的快捷方式,但如果你不正确理解它可能会导致一些不希望的伤害(比如很多不需要的重做日志文件)。我正在寻找人们了解快速问题和长期问题之间的区别。

2.在 IO 绑定的系统中,为了更好地利用 IO,您需要调优哪些主要参数?

磁盘 IO 是任何数据库中最慢的部分,任何 DBA 都必须了解这个概念。简单的答案总是添加更多内存,但这不仅仅是关于缓冲池。候选人是否了解影响 IO 的其他变量和数据库内部结构?例如,他们是否了解重做日志、刷新、io_capacity 等,他们可以了解他们所做的事情吗?这些变量的组合将减少 IO 依赖,同时延长 SSD 寿命。

3.你会接到电话说数据库速度很慢。你是做什么的?你如何识别一个慢查询?优化查询的最佳策略是什么?

查询优化是每个 DBA 都必须知道的活动。即使数据库在 99% 的情况下看似快速且高性能,一个恶意或慢查询也可能导致整个应用程序瘫痪。在这里,我们正在寻找不仅找到慢查询而且调整和修复它的过程。我们需要了解导致查询速度慢的原因是什么,例如索引、SQL 编写技巧不佳等。幸运的是,我们有工具可以识别坏人并帮助优化过程。候选人决定使用的工具没有他们经历的过程那么重要。我们正在寻找诸如识别缺失索引、错误主键、超大表问题、模式设计等的能力。

4.假设需要将 MySQL 服务器的流量增加 10 倍。您的可扩展性策略是什么?读取的缩放比例与写入的缩放比例相同吗?

这里有许多可扩展性策略。

您不仅要寻找具体的技术或流程,还要寻找它们背后的原因。

需要讨论和深入研究的关键事项:添加副本以卸载流量、设置负载均衡器、增加可用硬件、分片等。

所有这些都是有效的策略。真正的问题是候选人是否理解它们以及何时应该使用和不应该使用它们?

5.您如何解释异步复制滞后?为什么会有问题呢?你会如何解决它呢?

异步复制仍然是一个非常重要的话题,虽然性能随着 MySQL 的每个版本和修改而不断提高,但我仍然在帮助很多客户解决复制设置和延迟的问题。

许多公司使用副本进行报告、备份和高可用性,因为我们希望我们的副本尽可能保持最新。

好消息是,这也为候选人提供了另一个跳出框框思考的机会,因为异步复制延迟可能会受到数据库设计问题的显著影响,例如没有主键、长时间运行的查询、选择更新等。

远程复制是容灾备份的核心技术,可以实现远程数据同步和灾难恢复。远程复制支持两种复制模式:
-同步远程复制
实时地同步数据,最大限度保证数据的一致性,以减少灾难发生时的数据丢失量。
-异步远程复制
周期性地同步数据,最大限度减少由于数据远程传输的时延而造成的业务性能下降。

mysql同步复制和异步复制的区别

异步复制

MySQL复制默认是异步复制,Master将事件写入binlog,提交事务,自身并不知道slave是否接收是否处理;

缺点:不能保证所有事务都被所有slave接收。

同步复制

Master提交事务,直到事务在所有slave都已提交,才会返回客户端事务执行完毕信息;

缺点:完成一个事务可能造成延迟。

半同步复制

当Master上开启半同步复制功能时,至少有一个slave开启其功能。当Master向slave提交事务,且事务已写入relay-log中并刷新到磁盘上,slave才会告知Master已收到;若Master提交事务受到阻塞,出现等待超时,在一定时间内Master 没被告知已收到,此时Master自动转换为异步复制机制;

注:半同步复制功能要在Master和slave上开启才会起作用,只开启一边,依然是异步复制。

6、他们能解释异步复制和同步复制之间的区别吗?他们什么时候会选择一个而不是另一个?

        在 MySQL 中使用几种不同类型的异步复制(MySQL GTID、MariaDB GTID、Tungsten Replicator)和同步复制(Percona XtraDB Cluster、MySQL Group Replication),因此了解他们的一般知识有助于评估他们的技能。虽然这里没有 100% 正确的答案,但重要的是要了解选择一种解决方案而不是另一种解决方案的决策驱动因素是什么,例如性能、一致性、可用性等。

7、基于 Galera 的解决方案最少需要多少个节点?添加更多节点的利弊是什么?

MySQL 领域有两种主要的集群解决方案。基于 Galera 的复制,如 Percona XtraDB 集群和基于组复制的集群,如 InnoDB 集群。

这个问题的关键是要知道 Galera 是为一致性和可用性而设计的,而不是为编写可伸缩性而设计的。理解这些差异非常重要,因为“更多的写入器就更多的写入”的想法是很常见的,就好像添加更多写入器节点可能会增加集群的写入容量。

当然,您需要确保候选人不仅知道如何排除性能故障和设置高可用性,还需要了解一些基本的数据库操作和技术。至少询问一个关于安全、备份和主机(云或非云)的问题,是确保您了解基本知识的好方法。

8、请描述您推荐的备份策略。你会使用什么工具以及如何使用?

        了解备份的重要性很重要。我正在寻找能够引导我了解他们的经历并告诉我他们认为什么是好的和安全的备份策略的人。

        当他们说话时,我会问一些问题,看看他们是否了解他们所运行的设置的限制或好处。我希望他们能够掌握不同的备份选项(物理的、逻辑的)以及可以推荐的备份策略(每日、每周、每月、完整、增量等)。

        当然,我对人们如何确保他们的备份“良好”非常感兴趣。不是每个人都认为恢复测试应该被视为备份策略的一部分。

9、部署 MySQL 时您会遵循哪些基本安全策略?

        这一次也还是没有标准的答案,但毫无疑问,DBA 必须保护公司的数据。需要注意的一些事项:强密码、只能从 localhost 进行 root 访问、删除没有密码的用户、将 SUPER priv 删除给非管理员用户、限制用户访问他们自己的数据库/表、加密数据等。

原文链接

  • 2
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值