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
|