ubuntu mysql故障排查思路
导读:Ubuntu 上 MySQL 故障排查思路 一 快速定位路径 确认服务状态与最近日志 执行:sudo systemctl status mysql,若未运行,先尝试 sudo systemctl start mysql 查看错误日志:s...
Ubuntu 上 MySQL 故障排查思路
一 快速定位路径
- 确认服务状态与最近日志
- 执行:
sudo systemctl status mysql,若未运行,先尝试sudo systemctl start mysql - 查看错误日志:
sudo tail -f /var/log/mysql/error.log,优先从日志尾部定位首次报错行
- 执行:
- 检查系统资源
- 执行:
top、free -h、df -h,排除 CPU/内存/磁盘 瓶颈
- 执行:
- 核对网络与端口
- 执行:
sudo ufw status、sudo netstat -tulnp | grep 3306,确认 3306 端口与防火墙策略
- 执行:
- 校验关键配置
- 配置文件路径:
/etc/mysql/my.cnf、/etc/mysql/mysql.conf.d/mysqld.cnf - 重点项:
bind-address(远程访问常见设置为 0.0.0.0)、port=3306
- 配置文件路径:
- 变更后重启并复测
- 执行:
sudo systemctl restart mysql,再次观察状态与日志输出
- 执行:
二 常见故障与处理要点
| 症状 | 优先检查 | 快速修复 |
|---|---|---|
| 服务无法启动 Failed to start | systemctl status mysql、/var/log/mysql/error.log |
修正配置语法、释放磁盘空间、校正数据目录权限 |
| Can’t connect to local MySQL server through socket | 服务是否运行、socket 路径 | 启动服务;必要时创建目录并修正权限:sudo mkdir -p /var/run/mysqld &
&
sudo chown mysql:mysql /var/run/mysqld |
| Access denied for user | 用户、主机、密码插件 | 重置密码:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;
或使用 mysql_secure_installation |
| Host is blocked | 连接错误次数超限 | 刷新主机缓存:mysqladmin -u root -h your_mysql_server_ip flush-hosts |
| 端口被占用 | `netstat -tulnp | grep 3306` |
| 远程连不上 | bind-address、ufw、网络连通 |
将 bind-address=0.0.0.0,放行防火墙:sudo ufw allow 3306/tcp,并验证网络 |
| 表损坏 | 数据文件一致性 | 使用 mysqlcheck --all-databases --auto-repair 或引擎自带工具修复 |
| 配置错误 | 配置文件语法与路径 | 修正 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf 后重启 |
三 关键操作命令清单
- 服务与日志
sudo systemctl status|start|restart mysqlsudo tail -f /var/log/mysql/error.log
- 资源与端口
top、free -h、df -hsudo ufw status、sudo ufw allow 3306/tcpsudo netstat -tulnp | grep 3306
- 权限与认证
mysql -u root -pALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES;mysql_secure_installation
- 维护与修复
mysqlcheck --all-databases --auto-repairsudo chown -R mysql:mysql /var/lib/mysqlsudo truncate -s 0 /var/log/mysql/error.log(谨慎,先备份)
四 预防与优化建议
- 配置基线
- 编辑
/etc/mysql/mysql.conf.d/mysqld.cnf或/etc/mysql/my.cnf,合理设置innodb_buffer_pool_size(常设为内存的 50%–70%)、innodb_log_file_size=256M、max_connections等参数
- 编辑
- 安全与维护
- 运行
mysql_secure_installation,定期审计用户权限与远程访问策略
- 运行
- 监控与调优
- 启用慢查询日志,使用
EXPLAIN分析执行计划,配合 MySQL Tuner 与 Performance Schema 持续调优
- 启用慢查询日志,使用
五 排障流程建议
- 先备份:任何修复前先做数据备份(物理/逻辑皆可),避免不可逆损失
- 从日志入手:以
/var/log/mysql/error.log首条报错为锚点,逐条解决 - 分层验证:本地 socket 能否连 → 本机端口能否连 → 远程主机能否连
- 变更可控:一次只改一处,改完重启并复核状态与日志
- 仍无法恢复:保留错误日志与关键配置,寻求专业支持或社区协助
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu mysql故障排查思路
本文地址: https://pptw.com/jishu/759637.html
