Linux MariaDB故障排查方法
一 快速定位与通用流程
二 常见故障场景与处理要点
服务无法启动(Job failed)
本地连接失败 ERROR 2002 (HY000)
远程连接失败 Communications link failure
表损坏或异常关机后的恢复
三 性能与高CPU问题排查
四 高频检查清单与命令速查
| 检查项 | 关键命令或路径 | 处理要点 |
|---|---|---|
| 服务状态 | systemctl status mariadb.service;journalctl -xe | 先看状态与报错摘要,再进入详细日志 |
| 应用日志 | tail -fn 30 /var/log/mariadb/mariadb.log | 关注首次报错行与时间线 |
| 端口占用 | ss -lntp | grep 3306;必要时 kill 旧进程 |
| 配置文件 | my.cnf;strace mysqld … | 避免多份配置冲突;用 strace 跟踪加载 |
| 数据目录 | ls -ld /var/lib/mysql;chown -R mysql:mysql | 权限与属主正确;初始化前确保为空 |
| 日志目录 | mkdir -p /var/log/mariadb;chown mysql:mysql | 目录缺失或不可写会启动失败 |
| 运行目录 | mkdir -p /var/run/mariadb;chown mysql:mysql | PID/套接字写入失败常见原因 |
| 依赖库 | ldd /usr/local/mysql/bin/mysqld | 缺 libaio/numactl 等需补齐 |
| 磁盘空间 | df -h;du -sh /var/lib/mysql | 空间满会导致 InnoDB 加锁/启动失败 |
| 本地连接 | mysql --socket=…;ps -ef | 核对 socket 路径与进程 |
| 远程连接 | ss -lntp | grep 3306;检查云安全组/防火墙 |
| 表修复 | myisamchk -c -r … | MyISAM 索引损坏时修复 |
| 异常关机 | mysqld --tc-heuristic-recover=ROLLBACK | 处理悬挂事务后再正常启动 |