磁盘满了,MySQL 无法启动

最近此站点没法访问了,cloudflare 提示连接我的服务器出错,我也不知道原因是什么,二话不说,先把服务器重启。再刷新网站,提示没法连接数据库。我就再重启 MySQL:

systemctl start mysqld

结果重启失败,报出如下的错误:

Starting mysqld (via systemctl):  Job for mysqld.service failed because the control process exited with an error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

我的服务器只花了 10 美元,要运行 WordPress 程序,下意识觉得磁盘空间不够,因为才 10g 的空间,如何查看磁盘的占用情况呢?运行如下指令:

df -h

可以看到磁盘的占用空间达到了 94%,10g 这么快就用完了。

Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        219M     0  219M   0% /dev
tmpfs           234M     0  234M   0% /dev/shm
tmpfs           234M   13M  222M   6% /run
tmpfs           234M     0  234M   0% /sys/fs/cgroup
/dev/vda1       9.4G  8.3G  604M  94% /
tmpfs            47M     0   47M   0% /run/user/1002

那如何检测出哪个文件占用的大,将其删除释放空间出来呢?运行如下指令:

# du -sh *
0       bin
231M    boot
1.2G    data
0       dev
23M     etc
28K     home
0       lib
0       lib64
16K     lost+found
4.0K    media
4.0K    mnt
4.0K    opt
0       proc
1.5G    root
13M     run
0       sbin
4.0K    srv
0       sys
44K     tmp
4.9G    usr
493M    var

可以看到 usr 目录下占用了 5g,将近一半的空间。进入文件夹,删掉大文件,重启 mysqld 服务就搞定了。

进入 usr 目录,看看哪里占用较大。

# du -sh *
119M	bin
4.0K	games
41M	include
681M	lib
278M	lib64
103M	libexec
3.2G	local
33M	sbin
482M	share
852K	src
0	tmp

接着进入 local

# cd local
# du -sh *
2.0M	bin
5.0M	curl
4.0K	etc
12M	freetype
4.0K	games
103M	imagemagick
780K	include
120M	lib
8.0K	lib64
4.0K	libexec
2.6G	mysql
5.1M	nginx
162M	node
259M	php
4.0K	sbin
2.2M	share
4.0K	src