Linux下MySQL进程死掉的可能解决方案

linux下mysql进程死掉,且无法启动mysql服务,查看myql日志,发现如下日志:

2019-10-10 18:11:03 9772 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(136019968 bytes) failed; errno 12
2019-10-10 18:11:03 9772 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-10-10 18:11:03 9772 [ERROR] Plugin 'InnoDB' init function returned error.
2019-10-10 18:11:03 9772 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-10-10 18:11:03 9772 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-10-10 18:11:03 9772 [ERROR] Aborting

其中InnoDB: mmap(136019968 bytes) failed; errno 12是关键的错误信息。
从网上查资料,有人说修改innodb_buffer_pool_size,经过测试无效。
有人说是swap分区为0导致的此错误,使用free -m命令查看系统内存,发现swap确实为0。使用如下命令建立一个临时的swap分区:

d if=/dev/zero of=/swap bs=1M count=512  //创建一个swap文件,大小为512M
mkswap /swap //将swap文件变为swap分区文件
swapon /swap //将其映射为swap分区

此时使用free -m命令即可看到swap分区已存在了,然后启动mysql服务即可。
为了保证下次系统启动后,此swap分区被自动加载,需要修改系统的fstab文件,操作如下:

vi /etc/fstab
//在其中添加如下一行
/swap swap swap defaults 0 0
Author: Tunan
Link: http://yerias.github.io/2018/10/08/mysql/5/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.