之前因为网站隔一段时间之后报错,具体原因是数据库出错了,无法正常运行,当时也没有多想就设置了一个任务每天早上6点重启mysql。这样持续了一周左右的时间,没有出现任何问题,网站运行良好。但是就在今天打开网站时,出现了无法访问的情况。访问数据库,出现无法连接的情况,重启报错。错误信息如下:
查看了mysql的错误日志信息,提示信息如下:
InnoDB: mmap(137428992 bytes) failed; errno 12
[ERROR] InnoDB: Cannot allocate memory for the buffer pool
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Failed to initialize builtin plugins.
[ERROR] Aborting
百度简单解释就是没法为mysql的buffer pool分配128M的内存,内存不足引起的。查找资料后发现,原来这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲。我的服务器只有512M内存,所以这个参数开始为索引分配缓存的时候把mysql弄崩溃了。
修改innodb_buffer_pool_size参数,默认是128MB,现在更新为50MB,重启mysql,没有报错,mysql运行正常,网站运行正常
innodb_buffer_pool_size = 50M