MySQL 运维场景题
核心定位 本文整理 MySQL 运维面试中的生产场景题,重点关注定位顺序、关键命令、风险控制和恢复思路。
1. MySQL CPU 突然升高怎么排查
1.1. 参考答案
排查顺序:
- 使用
top确认 MySQL 进程 CPU 占用。 - 使用
SHOW PROCESSLIST查看正在执行的 SQL。 - 结合慢日志找高频慢 SQL。
- 对可疑 SQL 执行
EXPLAIN。 - 判断是否缺索引、全表扫描、排序、临时表或锁等待。
常用命令:
SHOW FULL PROCESSLIST;
SHOW GLOBAL STATUS LIKE 'Threads_running';
2. MySQL 连接数打满怎么处理
2.1. 参考答案
排查方向:
- 查看当前连接:
SHOW PROCESSLIST。 - 区分
Sleep连接和正在执行的Query。 - 检查应用连接池是否泄漏。
- 检查慢 SQL 是否导致连接堆积。
- 临时 kill 异常连接,长期优化连接池和 SQL。
SHOW VARIABLES LIKE 'max_connections';
SHOW GLOBAL STATUS LIKE 'Threads_connected';
3. 主从延迟怎么排查
3.1. 参考答案
先判断是哪一段慢:
- IO 线程慢:主库 binlog 拉取慢,可能是网络、主库压力、binlog 传输问题。
- SQL 线程慢:relay log 已拉取,但从库执行慢,可能是大事务、锁等待、无并行复制或从库性能不足。
SHOW REPLICA STATUS\G
重点字段:
Replica_IO_Running
Replica_SQL_Running
Seconds_Behind_Source
Retrieved_Gtid_Set
Executed_Gtid_Set
4. 磁盘空间被 binlog 打满怎么处理
4.1. 参考答案
应先判断是否可以清理,而不是直接删除文件。
- 查看 binlog 列表:
SHOW BINARY LOGS; - 确认从库复制状态和延迟。
- 确认备份恢复是否仍需要这些 binlog。
- 使用 SQL 命令清理。
PURGE BINARY LOGS BEFORE '2026-08-01 00:00:00';
禁止直接在文件系统中 rm mysql-bin.*,否则可能破坏 binlog index。
5. 误删数据怎么恢复
5.1. 参考答案
恢复思路:
- 立即停止相关写入,防止影响扩大。
- 确认最近全量备份时间。
- 找到误操作时间点。
- 恢复全量备份到临时实例。
- 回放 binlog 到误操作前一刻。
- 校验数据后导回生产。
mysqlbinlog --stop-datetime='2026-08-11 10:29:59' mysql-bin.000123 | mysql -uroot -p
6. 锁等待或死锁怎么排查
6.1. 参考答案
常用命令:
SHOW FULL PROCESSLIST;
SHOW ENGINE INNODB STATUS\G
重点分析:
- 哪个事务持锁。
- 哪个事务等待锁。
- 对应 SQL 是否命中索引。
- 事务是否过长。
- 是否存在热点行更新。
7. 面试总结
标准回答 MySQL 运维场景题应先保护现场,再按链路拆分排查。CPU 高先看 processlist、慢日志和执行计划;连接打满要区分 Sleep、慢 SQL 和连接池问题;主从延迟要区分 IO 线程慢还是 SQL 线程慢;binlog 打满不能直接删文件,应确认复制和恢复窗口后用
PURGE BINARY LOGS;误删恢复依赖全量备份加 binlog 时间点恢复;锁等待和死锁重点看 processlist、InnoDB status、事务时长和索引命中情况。
关联文档
- MySQL show processlist详解:定位连接、慢查询和锁等待。
- MySQL 主从同步故障排查:排查主从复制中断和延迟。
- MySQL binlog 保留时间与清理:处理 binlog 磁盘空间和恢复窗口问题。
