MENU

mysql 频繁宕机_共享型小内存服务器MySQL经常宕机的解决方案

September 8, 2021 • 已被 433 位童鞋围观过 • 系统运维

前段时间为博客换了台内存较小的搬瓦工服务器,内存只有1G,确实是有点小,图个便宜哈,装了个宝塔,但也因此遇到了非常让我头疼的问题--数据库经常挂掉,导致博客无法访问。
查看MySQL日志可以看到,主因其实还是内存问题

搜了好些优化的参数,什么innodb_use_sys_malloc、innodb_buffer_pool_size之类的,前几感觉似乎有点作用,但没两天发现也只是频率减少了些而矣,未从根本上解决问题。

MySQL安装时使用用yum安装的5.6.40的版本,自MySQL 5.6.2开始就已经不再被赞成使用innodb_use_sys_malloc和innodb_additional_mem_pool_size这两项配置了,更是在5.8开始直接移除该参数项。关键一点:innodb_use_sys_malloc和innodb_additional_mem_pool_size也不可以同时存在的。所以每次启动MySQL服务时,日志中都会有一条这样的警告信息。

InnoDB: Warning: Setting innodb_use_sys_malloc to FALSE is DEPRECATED. This option may be removed in future releases, together with the InnoDB's internal memory allocator.

问题分析

1.主因应该还是云服务器内存太小的问题,如果有条件,建议还是优先使用1G内存及以上的服务

2.MySQL未能配置适合服务的最优配置

解决方案

1.通过不断修改innodb_buffer_pool_size的数值,先后由256M逐次递减,最后设定到64M时,发现服务死掉的时间间隔比较长了,由频繁时的一天几次递减到几天一次,但仍然不知道会在什么时间死掉

2.写了一个Shell监控MySQL进程的脚本,每5分钟执行一次,在监测到服务死掉后自动重启MySQL服务

Last Modified: September 28, 2023