记一次 mysql 启动没反应 ,重启linux又可以启动

vim /var/log/mysqld.log

2018-02-04 13:22:49 28507 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2018-02-04 13:22:49 28507 [ERROR] Plugin 'InnoDB' init function returned error.
2018-02-04 13:22:49 28507 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-02-04 13:22:49 28507 [ERROR] Unknown/unsupported storage engine: InnoDB
2018-02-04 13:22:49 28507 [ERROR] Aborting

​https://stackoverflow.com/questions/25965638/mysql-fatal-error-cannot-allocate-memory-for-the-buffer-pool​

最终找到了解决方法​

于是继续,来看看内存占用情况:

 



[plain] view plain copy

 



  1. <span style="font-size:18px;">[root@iZuzc9f4ma6h2iZ ~]# free -m
  2. total        used        free      shared  buff/cache   available
  3. Mem:            992         435         413           1         142         403
  4. Swap:             0           0           0</span>


 

显然,结果很磕馋。内存仅413M,而且没有 Swap 分区。

那么问题来了,mysql 启动到底需要多少内存?

官网是这什么回答的:

 

​How MySQL Uses Memory​​?

MySQL allocates buffers and caches to improve performance of database operations. The default configuration is designed to permit a MySQL server to start on a virtual machine that has approximately512MB of RAM. You can improve MySQL performance by increasing the values of certain cache and buffer-related system variables. You can also modify the default configuration to run MySQL on systems with limited memory.

于是,那么有什么办法可以小内存启动 mysql 吗?

答案是有,

vim /etc/my.cnf

添加:

performance_schema_max_table_instances=200 table_definition_cache=200 table_open_cache=128

ok,再次运行 service mysqld restart ,没什么问题。