登录
    Technology changes quickly but people's minds change slowly.

阿里云 mysql 无缘无故挂掉

技术宅 破玉 1240次浏览 0个评论

近期在登录自己博客时,老是报数据库连接失败,然后重启服务器就好了。
但是,重启服务器很耗时间,不方便,不能每次都重启吧
于是远程连接服务器看了一下
原来是数据库服务挂掉了
启动时还报错
于是查看了下错误日志

2016-11-09 08:13:11 12604 [Note] Plugin 'FEDERATED' is disabled.
2016-11-09 08:13:11 12604 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-11-09 08:13:11 12604 [Note] InnoDB: The InnoDB memory heap is disabled
2016-11-09 08:13:11 12604 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-11-09 08:13:11 12604 [Note] InnoDB: Memory barrier is not used
2016-11-09 08:13:11 12604 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-11-09 08:13:11 12604 [Note] InnoDB: Using Linux native AIO
2016-11-09 08:13:11 12604 [Note] InnoDB: Using CPU crc32 instructions
2016-11-09 08:13:11 12604 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2016-11-09 08:13:11 12604 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2016-11-09 08:13:11 12604 [ERROR] Plugin 'InnoDB' init function returned error.
2016-11-09 08:13:11 12604 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-11-09 08:13:11 12604 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-11-09 08:13:11 12604 [ERROR] Aborting

原因是内存不够用了,导致mysql 崩溃
解决办法
修改mysql配置文件

vi /etc/my.cnf

修改如下代码:

[inonodb]
innodb_buffer_pool_size=8MB

把内存改小就好了。
重启MySQL服务

service mysqld restart

参考文章:
InnoDB: mmap(137363456 bytes) failed; errno 12
mysql5.6 无故退出 InnoDB: mmap(137363456 bytes) failed; errno 12
mysql – 启动错误InnoDB: mmap(137363456 bytes) failed; errno 12

谁让自己没钱租一台大内存的服务器来着

下面更新于2017年1月7日

然而,上面的配置并没有起太长时间作用,博客从移动端访问数据库还是会挂掉。
于是在V2EX上提问大神:
参考链接:
阿里云 wordpress 博客从移动端访问 mysql 数据库就会挂掉
有些大神给了建议,我也参考了阿里云的解决策略:
ECS Linux MySQL 常见无法启动或启动异常的解决方案
设置了SWAP分区,这样感觉稳定了一些。
总之,还是内存太小了,MySQL的优化也不够。


华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明阿里云 mysql 无缘无故挂掉
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址