最近程序在跑着没几天,突然访问不了,查看应用进程都还在。只有数据库的进程down掉了。于是找到日志文件看到如下错误
2017-07-24 01:58:53 19934 [Note] InnoDB: Initializing buffer pool, size = 512.0M InnoDB: mmap(137363456 bytes) failed; errno 12 2017-07-24 01:58:53 19934 [ERROR] InnoDB: Cannot allocate memory for the buffer pool 2017-07-24 01:58:53 19934 [ERROR] Plugin 'InnoDB' init function returned error. 2017-07-24 01:58:53 19934 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2017-07-24 01:58:53 19934 [ERROR] Unknown/unsupported storage engine: InnoDB 2017-07-24 01:58:53 19934 [ERROR] Aborting
意思是没有足够的内存为InnoDB创建缓冲池。原来是这个原因,接下来就是解决它。 在/etc/my.cnf把缓冲内存设小点就可以了
innodb_buffer_pool_size = 128M
当然有钱的主,是可以直接忽略这种方式的,加内存就可以了。
PS:默认日志文件在mysql的data目录下,文件名是 计算机名.err,也可以通过这个命令查看 show variables like ‘log_%’;