记一次由内存不足引起的MYSQL停止故障

我的一台服务器刚进行了迁移,从独立服务器迁移到了腾讯云,奇怪的是,每隔一周左右,会发生一次MYSQL莫名其妙停止服务的情况,重启服务器之后正常。

根据监控日志,找到服务停止时间附近的错误日志,发现如下:

171112 7:59:05 [Note] Plugin ‘FEDERATED’ is disabled. 171112 7:59:05 InnoDB: The InnoDB memory heap is disabled 171112 7:59:05 InnoDB: Mutexes and rw_locks use GCC atomic builtins 171112 7:59:05 InnoDB: Compressed tables use zlib 1.2.3 171112 7:59:05 InnoDB: Using Linux native AIO 171112 7:59:05 InnoDB: Initializing buffer pool, size = 256.0M 171112 7:59:05 InnoDB: Completed initialization of buffer pool 171112 7:59:05 InnoDB: highest supported file format is Barracuda. 171112 7:59:05 InnoDB: Waiting for the background threads to start 171112 7:59:06 InnoDB: 5.5.57 started; log sequence number 1595675 171112 7:59:06 [Note] Recovering after a crash using mysql-bin 171112 7:59:06 [Note] Starting crash recovery… 171112 7:59:06 [Note] Crash recovery finished. 171112 7:59:06 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306 171112 7:59:06 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’; 171112 7:59:06 [Note] Server socket created on IP: ‘0.0.0.0’. 171112 7:59:07 [Note] Event Scheduler: Loaded 0 events 171112 7:59:07 [Note] /www/server/mysql/bin/mysqld: ready for connections. Version: ‘5.5.57-log’ socket: ‘/tmp/mysql.sock’ port: 3306 Source distribution 171112 8:13:05 [Note] Plugin ‘FEDERATED’ is disabled. 171112 8:13:06 InnoDB: The InnoDB memory heap is disabled 171112 8:13:06 InnoDB: Mutexes and rw_locks use GCC atomic builtins 171112 8:13:06 InnoDB: Compressed tables use zlib 1.2.3 171112 8:13:06 InnoDB: Using Linux native AIO 171112 8:13:06 InnoDB: Initializing buffer pool, size = 256.0M InnoDB: mmap(274726912 bytes) failed; errno 12 171112 8:13:06 InnoDB: Completed initialization of buffer pool 171112 8:13:06 InnoDB: Fatal error: cannot allocate memory for the buffer pool 171112 8:13:06 [ERROR] Plugin ‘InnoDB’ init function returned error. 171112 8:13:06 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed. 171112 8:13:06 [ERROR] Unknown/unsupported storage engine: InnoDB 171112 8:13:06 [ERROR] Aborting 171112 8:13:06 [Note] /www/server/mysql/bin/mysqld: Shutdown complete

一开始便沿着Plugin ‘FEDERATED’ is disabled.这个信息去查,找到很多资料说是因为没有设置tmpdir的原因,但想了想,应该跟这个没有关系,于是继续找。

后来看到这里,才发现问题mmap(274726912 bytes) failed; errno 12

后面紧接着几句cannot allocate memeory for the buffer pool无法分配内存给buffer pool,内存不足了?

由于我已经重启服务器了,所以没法看到当时的内存占用情况。然后就想,服务器的变化,之前是4G的独立服务器,现在是4G内存的云服务器,按理说应该不会有问题,腾讯云的云主机内存也不会超售。

然后在腾讯云的公告里乱翻,发现一则“关于新购买Linux服务器不再提供SWAP盘的通知”,然后赶紧执行一下free -m看了一下,发现果然swap分区为0

然后按照

https://cloud.tencent.com/document/product/362/3597

这个说明分配了swap分区,恢复正常了。(文中xxx替换到你想分配到的目录,我替换到了/mnt/swap下,LABEL=xxx这里不用管,直接写/mnt/swap即可)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

干货:Sqoop导入导出数据练习

sqoop简介 1,sqoop:sql-to-hadoop, sqoop是连接关系型数据库和hadoop的桥梁: (1),把关系型数据库的数据导入到hadoo...

65910
来自专栏chenssy

在一个千万级的数据库查寻中,如何提高查询效率?

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 orderby 涉及的列上建立索引;

992
来自专栏乐沙弥的世界

SQL*PLus 帮助手册(SP2-0171)

    对于经常在SQL*Plus 下工作的大师们而言,总是时不时查询SQL*Plus的帮助命令。着实太多了,记不住。SQL*Plus下直接提供了help命令来...

1533
来自专栏数据之美

MySQL 死锁与日志二三事

最近线上 MySQL 接连发生了几起数据异常,都是在凌晨爆发,由于业务场景属于典型的数据仓库型应用,白天压力较小无法复现。甚至有些异常还比较诡异,最后 root...

3116
来自专栏乐沙弥的世界

InnoDB: Error: io_setup() failed with EAGAIN

    最近安装好了MySQL之后,在启动MySQL服务时无法正常启动MySQL。提示没有更新/var/lib/mfailedZDB.pid并退出。该MySQL...

711
来自专栏数据和云

当SQL Server爱上Linux:配置 SQL Server 2017 上的可用性组初体验

作者 | 张乐奕:Oracle ACE 总监,ACOUG (中国 Oracle 用户组)联合发起人。Oracle 数据库高可用解决方案与 Exadata 一体...

1034
来自专栏杨建荣的学习笔记

浅谈exp/imp(下) (r5笔记第84天)

相关链接:浅谈exp/imp(上) (r5笔记第81天) 你可能 不了解的dump文件 在工作中,dump文件对于dba而言是再平常不过的文件了。不过因为dum...

3149
来自专栏数据和云

专家出诊:SQL Server 高CPU系列之索引诊断

作者题记:CPU高使用率往往会导致SQL Server服务响应缓慢,查询超时,甚至服务挂起僵死,可以说CPU高使用率是数据库这种后台进程服务的第一大杀手。引发C...

3754
来自专栏idba

insert 语句加锁机制

之前的文章里面总结了很多死锁案例,其实里面有几篇文章对于insert加锁流程表述的不准确,而且微信公众号又无法修改,所以通过本文重新梳理insert...

1133
来自专栏沃趣科技

MVCC原理探究及MySQL源码实现分析

目录预览 数据库多版本读场景 MVCC实现原理 1、通过DB_ROLL_PT 回溯查找数据历史版本 2、通过read view判断行...

4458

扫码关注云+社区