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

博主在使用512M内存的云服务器运行MySQL时遇到宕机问题,通过日志分析确定内存不足为主要原因。尝试调整innodb_buffer_pool_size参数缓解,但未彻底解决。最终采取编写Shell脚本监控并自动重启MySQL服务来减少影响。
摘要由CSDN通过智能技术生成

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

2018-06-14 22:48:19 11104 [Note] Plugin 'FEDERATED' is disabled.

2018-06-14 22:48:21 11104 [Note] InnoDB: Using atomics to ref count buffer pool pages

2018-06-14 22:48:21 11104 [Note] InnoDB: The InnoDB memory heap is disabled

2018-06-14 22:48:21 11104 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2018-06-14 22:48:21 11104 [Note] InnoDB: Memory barrier is not used

2018-06-14 22:48:21 11104 [Note] InnoDB: Compressed tables use zlib 1.2.3

2018-06-14 22:48:21 11104 [Note] InnoDB: Using Linux native AIO

2018-06-14 22:48:21 11104 [Note] InnoDB: Using CPU crc32 instructions

2018-06-14 22:48:21 11104 [Note] InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12

2018-06-14 22:48:21 11104 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

2018-06-14 22:48:21 11104 [ERROR] Plugin 'InnoDB' init function returned error.

2018-06-14 22:48:21 11104 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2018-06-14 22:48:21 11104 [ERROR] Unknown/unsupported storage engine: InnoDB

2018-06-14 22:48:21 11104 [ERROR] Aborting

搜了好些优化的参数,什么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服务

附MySQL服务监测执行脚本截图

c104bc7cf7975dbfa7b9ef98dc816733.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值