Mysql 5.5+ 错误InnoDB: mmap(136019968 bytes) failed; errno 12

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

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

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

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

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

vi /etc/fstab
//在其中添加如下一行
/swap swap swap defaults 0 0
  • 1
  • 2
  • 3

保存文件即可。

参考资料: 
http://cocos.iteye.com/blog/1089277 
http://www.cnblogs.com/olinux/p/5144205.html 
https://stackoverflow.com/questions/10284532/amazon-ec2-mysql-aborting-start-because-innodb-mmap-x-bytes-failed-errno-12

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值