linux mysql 数据库启动异常问题记录
一:数据库查询突然变的很慢,后面就直接挂掉了,重启数据库
首先要找到mysqld所在的目录在哪里:
sudo find / -name mysqld -type f 2>/dev/null
返回:
/etc/my.cnf 已经配置了参数:可以直接执行: sudo /www/server/mysql/bin/mysqld
否则可以执行如下也可以:
sudo /www/server/mysql/bin/mysqld --user=mysql --datadir=/www/server/data &
其他执行:
systemctl start mysqld
# 或
service mysql start
报错:
ERROR 28: No space left on device
ERROR: Could not set the file size of '/www/server/data/ibtmp1'. Probably out of disk space
二:使用命令 df -h 查询磁盘使用情况,看到如下图所示磁盘的确占满了
在Linux系统中,/dev/vda1
是虚拟磁盘的第一个分区,当该分区空间不足时,系统会显示磁盘已满的提示。
常见原因
- 日志文件无限制增长:系统或应用程序日志文件可能持续写入数据,未设置轮转或删除策略。
- 临时文件堆积:程序运行中产生的临时文件未被及时清理。
- 大文件或目录:单个文件或目录占用大量空间。
- 虚拟磁盘未扩展:虚拟磁盘容量固定,随着数据增长导致空间不足。
解决方法
- 清理日志文件:使用
journalctl --vacuum-time=3d
删除三天前的日志。 - 删除临时文件:清理
/tmp
目录中的临时文件(需注意数据备份 - 扩展虚拟磁盘:在虚拟机软件中增加虚拟磁盘容量。
- 检查文件系统:运行
fsck /dev/vda1
修复错误。
若/dev/vda1
为物理硬盘分区,则需检查硬盘健康状态或更换更大容量硬盘。
三:删除了一些历史启动的jar包和历史日志文件,然后磁盘使用率将至70%,再次启动成功
四:磁盘空间不足会对数据库性能和运行产生严重影响,主要原因如下:
直接影响:
1:无法写入新数据
数据库无法创建新的数据文件
无法写入事务日志(redo log、binlog等)
INSERT、UPDATE操作失败
2:临时文件创建失败
排序、分组操作需要临时空间
大查询无法执行
索引重建等维护操作失败
性能影响:
3:日志文件问题
事务日志无法轮转,导致事务阻塞
binlog无法写入,主从同步中断
错误日志无法记录,问题难以排查
4:缓冲池效率下降
脏页无法及时刷新到磁盘
缓冲池命中率下降
内存中数据无法持久化
系统层面影响:
5:操作系统层面
文件系统进入只读模式
系统无法创建临时文件
swap空间不足(如果swap也在同一磁盘)
6:连锁反应
数据库连接堆积
应用程序超时和错误
系统整体响应变慢
数据库崩溃原因:
7:关键操作失败:
-- 例如:检查点无法完成
InnoDB: ERROR: Write to file ./ibdata1 failed
8:事务回滚失败
无法写入undo日志
事务无法正常提交或回滚
预防措施:
监控和告警
设置磁盘使用率告警(如80%)
定期清理日志文件
监控数据库表空间使用情况
空间管理
定期清理无用数据
归档历史数据
优化表结构减少空间占用
架构优化
使用独立磁盘存储数据文件【或者直接使用阿里云数据库】
设置自动扩容机制
分离日志和数据文件存储