Debian系统下MySQL故障排查实用手册

一 快速定位步骤
- 检查服务状态与启动失败原因:执行sudo systemctl status mysql,若未运行可尝试sudo systemctl start mysql;同时查看系统日志journalctl -u mysql与 MySQL 错误日志**/var/log/mysql/error.log获取具体报错。必要时用ps aux | grep mysql**确认进程是否存在。
- 核对关键配置:检查**/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf中的datadir、socket、bind-address、port**等关键项是否一致且合法。
- 资源与端口网络:用top/htop与df -h排查CPU/内存/磁盘是否不足;用sudo netstat -tuln | grep 3306确认端口监听,依据防火墙放行策略开放3306/tcp(如使用ufw或firewalld)。
二、常见故障与修复对照表
三 性能与慢查询排查
- 开启与分析慢查询:临时开启slow_query_log=1、设置long_query_time=1,使用mysqldumpslow或pt-query-digest定位最耗时的 SQL;必要时在配置文件中永久启用。
- 执行计划与索引:对慢 SQL 使用EXPLAIN查看type、key、rows、Extra(如出现Using filesort/Using temporary需优化);必要时用EXPLAIN FORMAT=JSON获取更细信息。
- 实时负载与锁:用SHOW FULL PROCESSLIST查看长时间运行与阻塞语句;用SHOW ENGINE INNODB STATUSG分析死锁与锁等待;结合performance_schema与sys库识别高消耗 SQL、全表扫描与临时表使用。
四 主从复制与高可用检查
- 复制链路健康:在主库执行SHOW MASTER STATUS,在从库执行SHOW SLA VE STATUSG,重点检查Sla ve_IO_Running/Sla ve_SQL_Running是否为Yes,并排查Seconds_Behind_Master延迟与Last_Error信息。
- 常见延迟与中断处理:关注备库IOPS/规格是否不足、主库是否存在大事务/DDL、以及MDL 锁或无主键表导致的复制阻塞;必要时拆分大事务、在业务低峰执行 DDL、或终止阻塞会话恢复同步。
五 安全操作与回退建议
- 变更前先备份:对数据目录与配置做完整备份,变更失败可快速回滚。
- 在线调整需谨慎:动态变量(如slow_query_log、long_query_time)可在线修改,涉及重启的参数应评估窗口期与影响。
- 无法恢复时的处置:在确保有有效备份的前提下,考虑重新安装或恢复至最近可用备份,避免数据二次损坏。