InnoDB: mmap(137363456 bytes) failed; errno 12 解决方法

今天用LNMP一键安装包(lnmp.org)用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql的时候启动不了,报了如下错误:

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.pid).

 

当我查看mysql错误日志的时候(LNMP一键安装包日志路径是:/usr/local/mysql/var/),给我反映了具体如下ERROR错误:

InnoDB: mmap(137363456 bytes) failed; errno 12
2019-06-08 09:08:05 14335 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' init function returned error.
2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-06-08 09:08:05 14335 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-06-08 09:08:05 14335 [ERROR] Aborting

中文翻译

InnoDB:mmap(137363456字节)失败; errno 12
2019-06-08 09:08:05 14335 [错误] InnoDB:无法为缓冲池分配内存
2019-06-08 09:08:05 14335 [ERROR]插件'InnoDB'init函数返回错误。
2019-06-08 09:08:05 14335 [ERROR]插件'InnoDB'注册为STORAGE ENGINE失败。
2019-06-08 09:08:05 14335 [错误]未知/不支持的存储引擎:InnoDB
2019-06-08 09:08:05 14335 [ERROR]中止

InnoDB: mmap(137363456 bytes) failed; errno 12

 

原因:

经过千辛万苦,最后找到了原因,原因是内存不够用,内存不足造成的。

 

解决方法

因为由于是内存不够用的问题,也可以说你的服务器配置过低,需要考虑服务器配置升级的问题。

 

1、查看服务器的免费剩余内存

可以用"free -m"命令来查看自己服务器的内存:

$ free -m

free -m

从上图中可以得到,免费的内存只有大概300M的样子;而mysql默认给InnoDB分配的内存就是128M。所以说,内存的确是不足。

注意:有时候服务器免费内存太少,如果你又没有用过什么,不妨重启一下服务器系统。

 

3、修改mysql配置文件my.cnf,添加如下设置参数:把mysql给InnoDB分配的内存设置为8M

innodb_buffer_pool_size = 8M

 

4、现在,我再用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql,结果出现了“SUCCESS!”,说明成功了。

 

注意:如果你此次启动成功了后,等一会儿,mysql又被突然关闭了,你又需要重启,经常反反复复。这说明你服务器的配置真的是太垃圾了,支撑不了你现有的业务了,需要考虑升级,或者做一个CDN,减少数据库的请求压力。

    A+
发布日期:2019年06月08日 10:46:22  所属分类:MySQL
最后更新时间:2019-06-08 13:17:43
付杰
  • ¥ 69.0元
  • 市场价:69.0元
  • ¥ 15元
  • 市场价:15元
  • ¥ 79.0元
  • 市场价:99.0元
  • ¥ 69.0元
  • 市场价:69.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: