MySQL服务器之前一只正常运转,今天突然发现连接不了了,服务挂了,查看日志如上。
1
|
systemctl status mysqld
|
命令查看报错信息,基本没什么作用,所以还是需要看日志,用于是使用centos上的yum安装的mysql,日志默认在/var/log/mysqld.log
打开mysqld.log查看启动时的报错信息如下:
最关键的在这一句:
1
|
[ERROR] InnoDB: mmap(137428992 bytes) failed; errno 12
|
初步怀疑是内存不够,但是,经过查看日志和确认mysql配置文件,已经给mysql分配了128M内存,不能是内存不够。
我们知道,linux中的内存除了memory,还有swap,也有可能是swap不够了,所以使用命令
1
|
free
|
查看可用内存,竟然发现swap空间是0,这时想起来,这台主机是新申请的,没有分配swap,使用下面命令分配1G大小的swap空间:
首先划分1G空间,用于swap
1
|
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
|
接下来创建swap区
1
|
sudo mkswap /swapfile
|
最后启用swap
1
|
sudo swapon /swapfile
|
创建完swap之后,可以再使用free命令查看内存情况
可以看到,swap区已经有1G大小了
再次启动mysql
1
|
systemctl start mysql
|
可以看到,mysql已经成功启动了
转自http://www.codersui.com/121.html