现象
阿里云上自己部署的mysql突然就挂掉,之前的操作好像有通过navcat还原数据库,sql文件大概是500M的样子。在此之前,一切都很正常。
解决路径
- 第一个想到登录服务器,重新启动一下试试。然后,没啥用。报错内容
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.
那就按着日志来,执行 systemctl status mysqld.service 和 journalctl -xe。也没说是啥错误。
- Google走起。原来大家都遇到类似情况,可以通过/etc/my.cnf 找到日志输入的地址,我的地址为 /var/log/mysqld.log。tail -f -n 1000 var/log/mysqld.log。发现没有今天的日志,都是4月份的。这就蛋疼了,这节奏不对啊。别人都有日志,可以看到错误的原因。
-
这个状态有点奇怪,为啥一直是启动中的状态呢?
image.png - 作为一个菜鸡开发,我找遍了好多信息,别人mysql无法启动,都有日志输出错误原因,唯独我这边没有这个情况。那好吧,服务器重启一把,也没影响,试试总没错,虽然没抱希望。然后,重启果然也没用。
- 这难不成是要逼我重做实例么?不行,不能认输。那安装个docker吧。在docker上再搞mysql总行了吧。docker 安装也报错,这次不一样了,在执行
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
时候,说我没有足够的空间。这是搞我啊,我去看看磁盘空间。
df -hl
#### 结果
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 38G 0 100% /
查看下是什么文件,占了这么大空间。
# cd到 / 目录下
cd /
# 执行命令
du -sh *
结果temp 目录占了31G空间
temp文件夹占用达31G
39F6E4612EB5651C362BFB29C59E9B83.png
扎心了。
也不管了,先删掉这个文件,然后再新建一个,相当于是清空了内容。我这么操作,是因为这是测试环境,按道理应该要考虑保存最近一段日期的记录。
最终解决方案
没错,删除那个日志,保证磁盘有足够的空间,mysql就启动成功了。所以最终mysql无法启动的原因是 -------- “磁盘空间不够”
反思
其实在上边看到第 3 步那个图的信息时候,就应该考虑一下磁盘的问题。因为看起来mysql的启动是被阻塞了,一直处于启动状态,很可能的原因,就是磁盘空间不够,mysql在等待磁盘空出来。不过,毕竟自己不是玩运维的,能解决,我就很开心了。