update at 2026-07-07 16:05:18
This commit is contained in:
540
dba-mianshi.md
Normal file
540
dba-mianshi.md
Normal 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
|
||||||
|
│
|
||||||
|
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)**:最终效果(最好有量化指标,如可用性提升、故障率下降、恢复时间缩短等)
|
||||||
Reference in New Issue
Block a user