update at 2026-07-07 16:05:18

This commit is contained in:
douboer
2026-07-07 16:05:18 +08:00
parent 56d302f20c
commit e100bcb13f

540
dba-mianshi.md Normal file
View File

@@ -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
ProxyProxySQL
┌────────────┴────────────┐
│ │
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** 方法:
- **SSituation**:项目背景
- **TTask**:你的职责
- **AAction**:具体采取了哪些措施
- **RResult**:最终效果(最好有量化指标,如可用性提升、故障率下降、恢复时间缩短等)