Debian系统下MySQL故障排查与修复实用指南

一 快速定位步骤
- 检查服务状态与启动失败原因:先执行sudo systemctl status mysql查看 MySQL 服务是否正常运行,若服务未启动,可尝试使用sudo systemctl start mysql手动启动;同时结合系统日志journalctl -u mysql以及 MySQL 错误日志**/var/log/mysql/error.log进一步定位报错信息。必要时可通过ps aux | grep mysql**确认 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确认 MySQL 默认端口是否正常监听,并根据防火墙策略放行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)通常可以在线修改,但涉及重启生效的参数需要提前评估维护窗口和业务影响。
- 无法恢复时的处置:在确认已有有效备份的前提下,可考虑重新安装 MySQL 或恢复到最近可用备份,尽量避免因误操作造成数据二次损坏。
