今天在自己的服务器上写了一个mysql自动重启的脚本,写完把mysql关闭测试,结果发现打不开mysql了。查了下/var/log/mysqld.log启动日志,发现以下提示问题:
160810 11:55:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
160810 11:55:03 [Note] /usr/sbin/mysqld (mysqld 5.5.50) starting as process 19035 ...
160810 11:55:03 [Note] Plugin 'FEDERATED' is disabled.
160810 11:55:03 InnoDB: The InnoDB memory heap is disabled
160810 11:55:03 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160810 11:55:03 InnoDB: Compressed tables use zlib 1.2.3
160810 11:55:03 InnoDB: Using Linux native AIO
160810 11:55:03 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160810 11:55:03 InnoDB: Completed initialization of buffer pool
160810 11:55:03 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160810 11:55:03 [ERROR] Plugin 'InnoDB' init function returned error.
160810 11:55:03 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160810 11:55:03 [ERROR] Unknown/unsupported storage engine: InnoDB
160810 11:55:03 [ERROR] Aborting
160810 11:55:03 [Note] /usr/sbin/mysqld: Shutdown complete
从日志里看,mysql默认分配的Initializing buffer pool是128M,查了下内存,果然剩余的不够128M了,所以不能启动。
因为穷,买不起配置更好的服务器,所以才遇到了这个奇葩的问题。
说解决方案:
很简单,my.cnf里面设置innodb_buffer_pool_size设置的小一点即可
innodb_buffer_pool_size = 8M
就这~~~