Press "Enter" to skip to content

Posts published in “Maintenance”

InnoDB: Cannot allocate memory for the buffer pool

综述:这是一次MySQL启动失败故障排查的过程。核心报错内容是 [ERROR] InnoDB: Cannot allocate memory for the buffer pool ,解决方案是修改mysql配置文件里下述参数的值: innodb_buffer_pool_size 、 join_buffer_size ,然后重启mysqld服务。对应服务器系统是CentOS 7。

1、查看mysql配置文件

得到类似如下的内容:

在文件底部可看到 log-error=/var/log/mysqld.log ,说明可通过 /var/log/mysqld.log 文件查看mysql错误日志。

2、查看mysql错误日志

将日志文件拉到底部查看最新日志,得到如下内容:

发现:

应该是内存不够启动mysql服务了。

注意:报错信息里所需内存大小为:137428992 bytes = 137428992 / 1024 / 1024 M = 131.0625 M

3、查询内存情况

得到:

发现此时服务器相关内存情况为:

  • free: 16 M
  • buff/cache: 100 M
  • available: 70 M

这几个数据量都很可怜了。所以我们可以增大可用内存,停掉一些不用的服务,或者减少mysql所需内存。

4、修改mysql配置文件

然后:

  • innodb_buffer_pool_size = 512M 修改为 innodb_buffer_pool_size = 64M
  • join_buffer_size = 512M 改为 join_buffer_size = 64M

然后,重启mysql服务:

5、验证mysql服务是否正常

打开网站,发现数据展示正常

完毕