在Linux服务器上运行数据库时,由于系统环境、硬件资源或人为操作等原因,经常会出现各类故障。掌握常见故障的特征与修复方式,是保障服务稳定的基础。

一、数据库服务无法启动
这是最常见的故障之一。通常表现为执行启动命令后进程直接退出,或日志中提示权限拒绝、端口占用等。
可能原因
- 数据目录权限不正确,数据库用户无法读写
- 配置文件存在语法错误
- 所需端口被其他进程占用
修复方法
以MySQL为例,可先检查数据目录权限并修正:
# 假设数据库用户为 mysql,数据目录为 /var/lib/mysql sudo chown -R mysql:mysql /var/lib/mysql sudo chmod 750 /var/lib/mysql # 使用配置检查命令 mysqld --validate-config # 启动服务 systemctl start mysqld
二、连接超时或拒绝连接
客户端连接数据库时出现 timeout 或 connection refused,一般不是数据库进程崩溃,而是网络或监听配置问题。
排查要点
- 确认数据库是否监听在正确地址,如 0.0.0.0 或具体内网IP
- 防火墙是否放通对应端口
- 最大连接数是否已满
查看MySQL监听情况的命令如下:
# 查看端口监听 ss -tlnp | grep 3306 # 查看防火墙规则 iptables -L -n | grep 3306
三、数据文件损坏
服务器意外断电、磁盘故障可能导致表文件损坏,数据库启动时提示表不存在或崩溃恢复失败。
修复示例
对于MyISAM表可使用自带的修复工具:
# 进入MySQL数据目录 cd /var/lib/mysql/your_db # 修复指定表 myisamchk -r your_table.MYI
若是InnoDB引擎,可尝试在配置中开启强制恢复,再导出数据重建:
[mysqld] innodb_force_recovery = 4
四、磁盘空间不足导致写入失败
当分区满时,数据库无法写入日志或临时文件,会报 No space left on device。
| 检查项 | 命令 |
|---|---|
| 查看磁盘使用 | df -h |
| 查找大文件 | du -sh /var/* | sort -h |
清理二进制日志或扩容后是直接恢复手段。MySQL中可安全清理过期binlog:
-- 查看日志文件 SHOW BINARY LOGS; -- 删除指定时间之前的日志 PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';
五、总结
Linux服务器上的数据库故障多集中于权限、配置、资源与文件完整性几个方面。遇到问题时优先查看错误日志,再结合上述分类逐步排查,大多能在短时间内恢复服务。