MySQL

MySQL 运维场景题

·5 分钟阅读·1720 字

整理 MySQL CPU 高、慢 SQL、锁等待、主从延迟、磁盘爆满和误删恢复等运维场景题

📋 目录

MySQL 运维场景题

核心定位 本文整理 MySQL 运维面试中的生产场景题,重点关注定位顺序、关键命令、风险控制和恢复思路。

1. MySQL CPU 突然升高怎么排查

1.1. 参考答案

排查顺序:

  1. 使用 top 确认 MySQL 进程 CPU 占用。
  2. 使用 SHOW PROCESSLIST 查看正在执行的 SQL。
  3. 结合慢日志找高频慢 SQL。
  4. 对可疑 SQL 执行 EXPLAIN。
  5. 判断是否缺索引、全表扫描、排序、临时表或锁等待。

常用命令:

SHOW FULL PROCESSLIST;
SHOW GLOBAL STATUS LIKE 'Threads_running';

2. MySQL 连接数打满怎么处理

2.1. 参考答案

排查方向:

  1. 查看当前连接:SHOW PROCESSLIST。
  2. 区分 Sleep 连接和正在执行的 Query。
  3. 检查应用连接池是否泄漏。
  4. 检查慢 SQL 是否导致连接堆积。
  5. 临时 kill 异常连接,长期优化连接池和 SQL。
SHOW VARIABLES LIKE 'max_connections';
SHOW GLOBAL STATUS LIKE 'Threads_connected';

3. 主从延迟怎么排查

3.1. 参考答案

先判断是哪一段慢:

  1. IO 线程慢:主库 binlog 拉取慢,可能是网络、主库压力、binlog 传输问题。
  2. 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. 参考答案

应先判断是否可以清理,而不是直接删除文件。

  1. 查看 binlog 列表:SHOW BINARY LOGS;
  2. 确认从库复制状态和延迟。
  3. 确认备份恢复是否仍需要这些 binlog。
  4. 使用 SQL 命令清理。
PURGE BINARY LOGS BEFORE '2026-08-01 00:00:00';

禁止直接在文件系统中 rm mysql-bin.*,否则可能破坏 binlog index。

5. 误删数据怎么恢复

5.1. 参考答案

恢复思路:

  1. 立即停止相关写入,防止影响扩大。
  2. 确认最近全量备份时间。
  3. 找到误操作时间点。
  4. 恢复全量备份到临时实例。
  5. 回放 binlog 到误操作前一刻。
  6. 校验数据后导回生产。
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

重点分析:

  1. 哪个事务持锁。
  2. 哪个事务等待锁。
  3. 对应 SQL 是否命中索引。
  4. 事务是否过长。
  5. 是否存在热点行更新。

7. 面试总结

标准回答 MySQL 运维场景题应先保护现场,再按链路拆分排查。CPU 高先看 processlist、慢日志和执行计划;连接打满要区分 Sleep、慢 SQL 和连接池问题;主从延迟要区分 IO 线程慢还是 SQL 线程慢;binlog 打满不能直接删文件,应确认复制和恢复窗口后用 PURGE BINARY LOGS;误删恢复依赖全量备份加 binlog 时间点恢复;锁等待和死锁重点看 processlist、InnoDB status、事务时长和索引命中情况。


关联文档

Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro