# DBA 主管面试题(高级 / DBA Manager) > 适用于高级 DBA、DBA Team Leader、数据库主管、数据库架构师等岗位。 --- # 一、团队管理 ## 1. 介绍一下你管理过的 DBA 团队? **考察点** - 团队规模 - 人员分工 - 值班体系 - 技术能力建设 **优秀回答要点** - 团队人数 - 每个人负责什么 - 如何保证7×24值班 - 如何培养新人 --- ## 2. 如何培养一个新 DBA? 通常希望听到: 第一阶段(基础) - Linux - MySQL基础 - SQL优化 第二阶段(生产) - 主从复制 - 备份恢复 - 故障排查 第三阶段(独立) - Shadow值班 - 独立处理故障 - 故障复盘 --- ## 3. 如何考核 DBA? 常见 KPI: - SLA - 数据库可用率 - MTTR - SQL审核覆盖率 - 自动化率 - 备份成功率 - 告警处理时长 --- # 二、数据库架构 ## 4. 如何设计一个互联网数据库架构? 参考: ``` LVS / SLB │ Proxy(ProxySQL) │ ┌────────────┴────────────┐ │ │ Primary Replica │ │ └────────────┬────────────┘ │ Backup Server │ Monitoring ``` 需要说明: - 主从复制 - 半同步 - 自动切换 - 备份恢复 - 监控报警 --- ## 5. 如何实现数据库高可用? 需要说明: - MHA - Orchestrator - Keepalived - VIP - Group Replication - InnoDB Cluster 重点: 为什么选择? 为什么不用其它方案? --- ## 6. 数据量达到100TB怎么办? 回答方向: - 分库分表 - 冷热分离 - 历史归档 - 数据仓库 - 对象存储 - OLTP、OLAP拆分 --- # 三、数据库性能 ## 7. 数据库CPU突然100%,怎么办? 建议回答流程: ``` 收到告警 │ 确认影响范围 │ 查看监控 │ 查看Processlist │ 定位SQL │ 分析Explain │ 决定Kill还是优化 │ 恢复业务 │ 故障复盘 ``` 重点: 体现处理流程。 --- ## 8. 数据库连接数打满怎么办? 可能原因: - 慢SQL - 程序连接泄漏 - 大事务 - 死锁 处理流程: - 限流 - Kill异常连接 - 定位SQL - 调整连接池 --- ## 9. Buffer Pool命中率下降怎么办? 回答: 检查: - Buffer Pool大小 - 热点数据 - 全表扫描 - 是否需要扩容 --- # 四、生产事故 ## 10. 请讲一次最严重的数据库事故。 推荐回答模板: ### 背景 项目是什么。 ### 故障现象 例如: CPU100% ### 原因 SQL缺索引。 ### 处理过程 - Kill SQL - 新建索引 - 恢复业务 ### 后续措施 - SQL审核 - 自动监控 - 上线规范 --- ## 11. 有没有误删数据? 回答: - 如何恢复? - PITR用了多久? - 是否有演练? --- ## 12. 主库宕机怎么办? 流程: ``` 发现故障 ↓ 确认主库不可恢复 ↓ 停止写入 ↓ 切换VIP ↓ 提升从库 ↓ 恢复业务 ↓ 检查一致性 ↓ 复盘 ``` --- # 五、数据库规范 ## 13. 如何避免开发写慢SQL? 建立: - SQL审核 - Explain审核 - 自动Review - CI检查 --- ## 14. 如何避免误删? 措施: - SQL审核 - 权限隔离 - 禁止无WHERE - sql_safe_updates - 延迟从库 - Binlog恢复 --- ## 15. 如何规范索引? 例如: - 每张表必须有主键 - 不允许重复索引 - 控制联合索引数量 - 定期清理无效索引 --- # 六、自动化建设 ## 16. 做过哪些自动化? 例如: - 自动巡检 - 自动备份 - 自动恢复验证 - 自动SQL审核 - 自动切换 - 自动告警 - 自动扩容 --- ## 17. 如何建设数据库平台? 一般包括: - 工单平台 - SQL审核 - 发布平台 - 巡检平台 - CMDB - 权限管理 --- # 七、监控体系 ## 18. 数据库监控哪些指标? MySQL: - QPS - TPS - Threads Running - Buffer Pool Hit Rate - Slow Query - Deadlock - Connections - Replication Delay Linux: - CPU - Memory - IO - Network - Disk 业务: - RT - Error Rate - TPS --- # 八、成本优化 ## 19. 如何降低数据库成本? 例如: - 历史归档 - SSD分层 - 云数据库 - 合并实例 - 自动扩容 - 参数优化 --- ## 20. 为什么不用Oracle? 考察: - 成本 - 授权 - 维护 - 人员 - 社区 --- # 九、跨团队合作 ## 21. 开发说数据库慢怎么办? 流程: ``` 收集证据 ↓ 查看监控 ↓ SQL分析 ↓ Explain ↓ 机器资源 ↓ 共同定位 ↓ 共同解决 ``` --- ## 22. 如何推动开发规范? 例如: 建立: - SQL Review - 开发规范 - 培训 - 发布审核 - 自动检查 --- # 十、管理能力 ## 23. DBA最重要的职责是什么? 优秀回答: > DBA不仅负责数据库运行,更负责数据库生命周期管理,包括架构设计、稳定性保障、容量规划、安全管理、自动化建设和团队规范建设,最终保障业务稳定运行。 --- ## 24. 如何减少线上事故? 建立: - 发布审核 - SQL审核 - 自动巡检 - 自动报警 - 灰度发布 - 故障演练 - 应急预案 --- ## 25. 如何建立数据库规范? 包括: - 命名规范 - SQL规范 - 索引规范 - 发布规范 - 权限规范 - 备份规范 - 恢复演练 --- # 十一、开放性问题 ## 26. 为什么选择MySQL? ## 27. MySQL未来的发展怎么看? ## 28. 如何评价云数据库? ## 29. 如何评价国产数据库? ## 30. 未来数据库团队的发展方向? 可以回答: - 自动化 - 平台化 - 智能运维(AIOps) - 云原生数据库 - 数据治理 --- # 十二、主管岗位十大经典问题 1. 请介绍一次最严重的数据库事故。 2. 主库宕机如何切换? 3. 如何保证数据库99.99%可用? 4. 如何建设数据库规范? 5. 如何管理DBA团队? 6. 如何培养新人? 7. 如何建设数据库自动化平台? 8. 如何做容量规划? 9. 如何控制数据库成本? 10. 你认为DBA主管最重要的职责是什么? --- # 面试建议 DBA主管岗位,面试官最关注的通常不是命令是否熟练,而是: - 是否处理过真实生产事故 - 是否具备架构设计能力 - 是否有团队管理经验 - 是否建立过数据库规范 - 是否推动过自动化建设 - 是否能够跨团队沟通协调 - 是否有风险意识和复盘能力 回答时建议遵循 **STAR** 方法: - **S(Situation)**:项目背景 - **T(Task)**:你的职责 - **A(Action)**:具体采取了哪些措施 - **R(Result)**:最终效果(最好有量化指标,如可用性提升、故障率下降、恢复时间缩短等)