diff --git a/dba-mianshi.md b/dba-mianshi.md new file mode 100644 index 0000000..c1ddec7 --- /dev/null +++ b/dba-mianshi.md @@ -0,0 +1,540 @@ +# 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)**:最终效果(最好有量化指标,如可用性提升、故障率下降、恢复时间缩短等)