MySQL DBA应知应会的81道面试题

基础知识

  1. 1. MySQL 是关系型数据库还是非关系型数据库?它的默认端口是多少?
  2. 2. 与Oracle相比,Mysql有什么优势?
  3. 3. MySQL有关权限的表是哪几个?
  4. 4. MySQL8 默认的存储引擎是什么?除过默认的,其他引擎有什么优缺点?
  5. 5. MySQL8 默认的字符集是什么?默认密码策略是什么?
  6. 6. 索引有哪几种类型?索引算法有哪些?索引设计的原则?
  7. 7. MySQL都有哪些锁?作用分别是什么?
  8. 8. varchar和char的使用场景?

复制与高可用

  1.  9. 说一说 MySQL 的逻辑复制原理以及流程?
  2. 10. 主从复制中,从库如何检测主库的 binlog 变化?主从复制延迟可能由哪些原因导致?
  3. 11. 读写分离有哪些解决方案?实现读写分离时,如何确保数据一致性?
  4. 12. MySQL主从复制模式有哪几种?常用的是哪种模式,它的优缺点?
  5. 13. 怎么提升 MySQL 主从复制性能?
  6. 14. MySQL 常用的高可用架构都有哪些,你认为哪种最好?
  7. 15. 如何保证 MySQL 高可用架构中的数据的一致性?
  8. 16. 做过 MySQL 主从的手动切换演练吗?说说步骤和关键命令?

日志与事务

  1. 17. MySQL 的 binlog 的作用是什么?一定要开启吗?如何利用 binlog 进行数据恢复与数据同步?
  2. 18. Binlog 和 Redo log 的区别是什么?Redo log 的写入机制与作用是什么?
  3. 19. 说一说Undo log 在事务中的作用与原理?
  4. 20. Binlog 的刷盘策略对数据库性能与数据安全有什么影响?
  5. 21. 怎么查看与分析 MySQL 的 binlog 内容?
  6. 22. MySQL 默认的事务隔离级别是哪个?作用是什么?
  7. 23. MySQL 如何保证事务的持久性?ACID 特性分别是什么,都是怎样实现的?
  8. 24. MySQL 两阶段提交是什么?详细描述其过程。两阶段提交在 MySQL 事务中的作用是什么?假设没有两阶段提交,会有什么问题?
  9. 25. 一条 update 语句在事务中的会经历哪些过程?

性能优化

  1. 26. 如何分析慢查询?在数据库中怎么开启?常用的慢查询分析工具与方法?
  2. 27. 使用索引查询一定能提高查询的性能吗?为什么?
  3. 28. MySQL 的性能优化怎么做的?数据库参数优化的一般思路与常用参数设置?
  4. 29. 如何处理 MySQL 中的锁竞争问题以提升性能?
  5. 30. 高并发场景下,如何优化 MySQL 的连接池配置?
  6. 31. MySQL 的性能优化怎么做的?
  7. 32. 什么是死锁?一般怎么去排查和解决?
  8. 33. MySQL如何处理大量的并发连接?
  9. 34. InnoDB 为什么设计 B+ 树索引?

监控与排查

  1. 35. 做过 MySQL 监控吗?采用的是哪些常用的监控工具(如 Zabbix、Prometheus 等)介绍?
  2. 36. MySQL 常见监控项有哪些?如何监控 MySQL 主从复制的状态与延迟?
  3. 37. MySQL CPU 高负载怎么排查?说说排查步骤与方法?
  4. 38. 怎么查看 MySQL 的阻塞情况?有几种方式?

安全与权限管理

  1. 39. MySQL 忘记 root 密码怎么解决?
  2. 40. MySQL修改密码的有几种方法?
  3. 41. MySQL 数据库的权限一般应该怎么管理?
  4. 42. 如何才能更好的保障数据安全?
  5. 43. 数据加密一般有哪几种方法?
  6. 44. 什么是SQL注入,如何防止它?

备份与恢复

  1. 45. 做过数据库备份吗,一般使用的哪种备份方式?
  2. 46. 备份过程中如何处理数据库的读写操作?
  3. 47. 物理备份和逻辑备份的原理、区别及优缺点是什么?
  4. 48. 备份策略是怎么设定的?
  5. 49. 新增一个数据集群备份需求,你会怎么去做?对于MySQL主从你会选择备份哪个库?
  6. 50. 如何确保数据备份的完整性?
  7. 51. 做过备份数据恢复演练吗,如何验证备份数据的可用性与正确性?流程一般是什么样的?
  8. 52. 在大数据量场景,如何优化数据库备份和恢复流程的?
  9. 53. 数据量比较大数据库一般是怎么备份的?
  10. 54. MySQL 备份遇到过夯住的情况吗?备份恢复失败一般怎么处理?

数据迁移与升级

  1. 55. 做过异构数据库的迁移吗,一般采用哪种方式?说说大概的流程和方法?
  2. 56. 你会选择哪些工具来辅助 MySQL 数据迁移?请说明它们的优缺点?
  3. 57. 如何处理跨版本的 MySQL 数据迁移(例如从 MySQL 5.6 到 MySQL 8.0)?需要注意哪些兼容性问题?
  4. 58. 在数据迁移过程中,如何最小化对生产环境的影响?MySQL 数据库如何进行优雅升级?
  5. 59. 在计划 MySQL 数据库升级时,你会如何评估新版本的稳定性和适用性?
  6. 60. 如何确保升级后的数据库性能不会下降?你会进行哪些性能测试?

问题处理与经验分享

  1. 61. 用户反映应用系统很慢,针对数据库层面, 你一般怎么去排查问题?
  2. 62. 请描述一次你在生产环境中处理 MySQL 性能瓶颈的经历。你是如何识别问题并进行优化的?
  3. 63. 描述一次你处理 MySQL 数据库崩溃的经历。你是如何进行故障诊断和数据恢复的?请详细说明步骤和工具?
  4. 64. 在以往的工作中,遇到过数据误删的情况吗?你是如何去解决的?
  5. 65. MySQL 数据页损坏怎么处理,有从库和没从库情况分别怎么处理?
  6. 66. MySQL 大表添加主键和修改字段有什么比较快的办法吗
  7. 67. 在高并发环境下,如何确保 MySQL 数据库的稳定性和性能?
  8. 68. 在处理 MySQL 死锁问题时,你会采取哪些措施来分析死锁原因并优化应用程序和数据库配置以防止再次发生?
  9. 69. 在规划 MySQL 容灾方案时,你会考虑哪些因素?如何确保在灾难发生时能够快速恢复服务?
  10. 70. 你认为 MySQL 故障处理过程中,哪些技能和知识是最关键的?如何不断提高这些能力?
  11. 71. 作为专业的DBA,你支持定期去修改数据库的密码吗?

其他技术细节

  1. 72. truncate、drop 和 delete 区别? 如果要删除一张大表的数据?应该选择哪个命令?
  2. 73. 误删数据怎么办?说说恢复的思路和方法?
  3. 74. truncate、drop 和 delete 误删数据后,应该用哪种方法或工具去恢复?
  4. 75. 在主从复制过程中,如何确保数据的一致性?如果发现数据不一致,你会如何处理?
  5. 76. 当主库发生故障导致无法服务时,你会如何快速将一个从库提升为主库以恢复服务?请描述具体步骤?
  6. 77. 是否需要给每个表建立专属的表空间?说一说优缺点?
  7. 78. MySQL 单库最大承载的数据量是多大?
  8. 79. 推荐几个稳定的数据库版本?
  9. 80. 怎么看待安全团队扫描出来的数据库漏洞?你一般是怎么去应对的?
  10. 81. 做过国产化替换吗?你觉得应该选择哪几个国产库完美替换MySQL呢?