CentOS MySQL故障排查步骤是什么
导读:CentOS 上 MySQL 故障排查步骤 一 快速定位与通用检查 确认服务状态与启动失败原因:执行systemctl status mysqld,若失败,立即查看**/var/log/mysqld.log获取首条报错;也可用journa...
CentOS 上 MySQL 故障排查步骤
一 快速定位与通用检查
- 确认服务状态与启动失败原因:执行systemctl status mysqld,若失败,立即查看**/var/log/mysqld.log获取首条报错;也可用journalctl -xeu mysqld**查看 systemd 日志上下文。
- 精确定位错误日志文件:在 MySQL 内执行SHOW VARIABLES LIKE ‘log_error’; 确认日志路径,再用tail -f /var/log/mysqld.log或**grep -i “error|warning|fail”**聚焦关键错误。
- 配置文件与关键参数:核对**/etc/my.cnf或/etc/mysql/my.cnf中的datadir、socket、port、log-error**等;修改后先语法检查再重启。
- 端口与进程:检查3306是否被占用(如ss -tlnp | grep 3306或netstat -tlnp | grep 3306),避免端口冲突。
- 资源与磁盘:用df -h与free -m确认磁盘空间与内存是否充足,InnoDB 启动失败常与空间不足相关。
- 数据目录权限:确保datadir(常见为**/var/lib/mysql**)属主为mysql:mysql,权限合理(如chown -R mysql:mysql /var/lib/mysql)。
二 无法启动 mysqld 的专项排查
- 残留进程或 PID 文件异常:用ps -ef | grep mysqld排查僵尸进程并清理;若提示“The server quit without updating PID file”,检查并清理残留的pid文件,确认**/var/run/mysqld目录存在且属主为mysql:mysql**。
- 套接字锁文件异常:若出现“Unix socket lock file is empty”,删除**/tmp/mysql.sock.lock**后重试启动。
- InnoDB 异常恢复:异常关机后可能出现“InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT”,在确保有可用备份的前提下,可尝试备份后删除ib_logfile*再启动(高风险,谨慎操作)。
- 数据目录或权限错误:确认datadir配置正确且目录存在,执行**chown -R mysql:mysql **修复权限。
- SELinux 干预:若仍失败,排查 SELinux 策略(如getenforce),必要时临时setenforce 0验证,再改为永久策略放行 mysqld 相关访问。
三 客户端无法连接的排查
- 本机连通性:在服务器本机执行mysql -u -p -h 127.0.0.1验证本地账号与套接字连通。
- 监听地址与端口:检查bind-address(如**/etc/my.cnf中[mysqld] bind-address=0.0.0.0允许远程;仅本地用127.0.0.1**),确认port=3306未被占用。
- 防火墙放行:对firewalld执行firewall-cmd --permanent --add-port=3306/tcp或firewall-cmd --permanent --add-service=mysql后firewall-cmd --reload。
- 用户权限:在 MySQL 内执行SELECT user,host FROM mysql.user;
,必要时创建允许远程的主机用户,例如:
CREATE USER ‘app’@‘%’ IDENTIFIED BY ‘StrongPass!’;
GRANT ALL PRIVILEGES ON . TO ‘app’@‘%’ WITH GRANT OPTION;
FLUSH PRIVILEGES; - 网络连通性测试:客户端执行ping < server_ip> 与telnet < server_ip> 3306验证路由与端口可达;若端口不通,回到防火墙/监听地址/端口占用环节复查。
四 性能与运行期问题的排查
- 实时会话与锁等待:在 MySQL 内执行SHOW FULL PROCESSLIST; 定位长时间运行或锁等待的会话并KILL 。
- 慢查询定位与分析:开启慢查询日志(如slow_query_log=1、slow_query_log_file=/var/log/mysql/slow.log、long_query_time=2),使用pt-query-digest /var/log/mysql/slow.log或mysqldumpslow -s t /var/log/mysql/slow.log找出 TOP SQL 并优化索引与执行计划。
- 错误与告警回顾:持续tail -f /var/log/mysqld.log并用grep -i error过滤,结合时间点关联业务操作与变更。
五 常用命令与最小修复示例
- 服务与日志:
systemctl status mysqld
journalctl -xeu mysqld
tail -f /var/log/mysqld.log
SHOW VARIABLES LIKE ‘log_error’; - 端口与进程:
ss -tlnp | grep 3306
ps -ef | grep mysqld - 权限与防火墙:
firewall-cmd --permanent --add-port=3306/tcp & & firewall-cmd --reload
firewall-cmd --list-all
SELECT user,host FROM mysql.user;
GRANT ALL PRIVILEGES ON . TO ‘app’@‘%’ IDENTIFIED BY ‘StrongPass!’ WITH GRANT OPTION; FLUSH PRIVILEGES; - 权限与目录修复:
chown -R mysql:mysql /var/lib/mysql - 常见最小修复组合:
1)修正bind-address并重启;2)放行3306/tcp并重载防火墙;3)创建**‘user’@'%'并授予权限;4)清理/tmp/mysql.sock.lock或/var/run/mysqld后启动;5)检查datadir**权限与磁盘空间。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS MySQL故障排查步骤是什么
本文地址: https://pptw.com/jishu/749715.html
