Ubuntu系统mysql.service自动重启调度问题:磁盘满后MySQL无法启动
MySQL磁盘耗尽后启动失败(systemd自动重启循环)
服务器磁盘空间耗尽后,启动MySQL Server时出现mysql.service自动重启调度的报错,执行service mysql restart命令后,MySQL仍无法正常启动,相关系统日志如下:
-- 定义者: systemd -- 支持: http://www.ubuntu.com/support -- -- cron.service的停止任务已完成。 -- -- 任务ID为21001,任务结果为成功。 Jun 05 12:49:38 server-instance systemd[1]: mysql.service: 已调度重启任务,重启计数器为21。 -- 主题: 单元的自动重启已被调度 -- 定义者: systemd -- 支持: http://www.ubuntu.com/support -- -- 根据单元配置的Restart=设置,mysql.service单元的自动重启已被调度。 Jun 05 12:49:38 server-instance systemd[1]: 已停止MySQL社区服务器。 -- 主题: mysql.service的停止任务已完成 -- 定义者: systemd -- 支持: http://www.ubuntu.com/support -- -- mysql.service的停止任务已完成。 -- -- 任务ID为21002,任务结果为成功。 Jun 05 12:49:38 server-instance systemd[1]: 正在启动MySQL社区服务器... -- 主题: mysql.service的启动任务已开始执行 -- 定义者: systemd -- 支持: http://www.ubuntu.com/support -- -- mysql.service的启动任务已开始执行。 -- -- 任务ID为21002。
解决步骤
1. 优先释放磁盘空间
- 清理系统冗余文件:执行
apt autoremove清理无用安装包,journalctl --vacuum-size=1G压缩清理系统日志 - 定位大文件:用
du -sh /*找出占用空间最大的目录,逐步排查删除不必要的大文件(如旧备份、临时文件、过期日志) - 清理MySQL日志:如果是MySQL相关日志占用空间,可删除过期的二进制日志(binlog),执行
PURGE BINARY LOGS BEFORE 'YYYY-MM-DD HH:MM:SS';(需先确认该时间前的日志已无备份需求)
2. 停止systemd自动重启循环
执行命令停止MySQL服务,避免循环重启干扰后续操作:
systemctl stop mysql
3. 检查并修复MySQL相关问题
- 确认数据目录权限:确保mysql用户拥有数据目录的读写权限
chown -R mysql:mysql /var/lib/mysql
- 修复表损坏:
- 针对MyISAM表,执行修复命令:
myisamchk -r /var/lib/mysql/*.MYI - 针对InnoDB表,编辑MySQL配置文件(通常为
/etc/mysql/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf),添加innodb_force_recovery=1到[mysqld]段,尝试启动MySQL;启动成功后再移除该参数并重启
- 针对MyISAM表,执行修复命令:
4. 验证启动
磁盘空间释放并完成修复后,启动MySQL并检查状态:
systemctl start mysql systemctl status mysql
同时查看MySQL错误日志(通常路径为/var/log/mysql/error.log),确认是否存在其他启动障碍。
内容的提问来源于stack exchange,提问作者Arun Maurya
相关产品推荐
相关产品推荐

