Files
devops/dba-mianshi.md
2026-07-07 16:05:18 +08:00

541 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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**:最终效果(最好有量化指标,如可用性提升、故障率下降、恢复时间缩短等)