MySQL服务中断后重启失败及解决办法(个例)
转载请标明出处^_^
原文首发于:https://www.zhangruibin.com
本文出自于:RebornChang的博客
MySQL服务中断后重启失败及解决办法(个例)
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/mysql-5.6.44-linux-glibc2.12-x86_64/data/zhrb.localdomain.pid).
早上上班的时候习惯性刷下自己的博客看看出故障没,有没有新的留言,刷了之后发现出故障了,那么按照以往的经验是数据库死掉了,那直接重启数据库吧。
因为MySQL服务加入了service,所以直接service mysql start 启动吧,意外的是,启动失败了,启动结果:
Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/mysql-5.6.44-linux-glibc2.12-x86_64/data/zhrb.localdomain.pid).
排查失败原因
根据提示,系统启动的时候找不到.pid结尾的文件,去文件夹下面ll的确没这个文件,但是为什么没这个文件,找到原因才能解决问题,所以还是看日志吧,博主的安装目录为/usr/local/mysql/mysql-5.6.44-linux-glibc2.12-x86_64/data/,错误日志指定在该目录下,查看zhrb.localdomain.err日志,截取相关日期的错误日志记录如下:
2019-08-11 20:29:06 11832 [Note] Plugin 'FEDERATED' is disabled.
2019-08-11 20:29:06 11832 [Note] InnoDB: Using atomics to ref count buffer pool pages
2019-08-11 20:29:06 11832 [Note] InnoDB: The InnoDB memory heap is disabled
2019-08-11 20:29:06 11832 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2019-08-11 20:29:06 11832 [Note] InnoDB: Memory barrier is not used
2019-08-11 20:29:06 11832 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-08-11 20:29:06 11832 [Note] InnoDB: Using Linux native AIO
2019-08-11 20:29:06 11832 [Note] InnoDB: Using CPU crc32 instructions
2019-08-11 20:29:06 11832 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2019-08-11 20:29:06 11832 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-08-11 20:29:06 11832 [ERROR] Plugin 'InnoDB' init function returned error.
2019-08-11 20:29:06 11832 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-08-11 20:29:06 11832 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-08-11 20:29:06 11832 [ERROR] Aborting2019-08-11 20:29:06 11832 [Note] Binlog end
2019-08-11 20:29:06 11832 [Note] Shutting down plugin 'partition'
2019-08-11 20:29:06 11832 [Note] Shutting down plugin 'ARCHIVE'
2019-08-11 20:29:06 11832 [Note] Shutting down plugin 'BLACKHOLE'
2019-08-11 20:29:06 11832 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
通过上面的日志我们可以看到一句重要的话:InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
这句话说的是InnoDB数据库引擎的初始工作区缓存大小为128M,系统可分配的mmap内存大小为137363456 bytes,换算成M是131M。
理论上来看,131M>128M,不应该存在分配内存失败啊,但是就是失败了,那是不是跟系统的内存分配机制有关?
顺便提一句,博主买的低端主机配置为:2Core,1G RAM,满服务下内存使用率如下图所示:
分析原因可能性
这时我们看下系统可用内存free -m:
[root@zhrb mysql-5.6.44-linux-glibc2.12-x86_64]# free -mtotal used free shared buff/cache available
Mem: 1007 414 469 2 123 442
Swap: 259 233 26
理论上看下是此时是有足够的内存去分配的(注意:此主机上运行了两个博客程序,每个分配的内存为300M,也就是说,剩下的内存虽然多,但是那是被别的程序打上标记了,一旦负载量大,别的程序占用了更多的内存就会跟mysql竞争,就容易导致分配不了足够内存进而分配失败)
但是依然启动失败,那是不是系统的内存分配策略不是有足够内存就全量分配呢?
来看一下:
[root@zhrb mysql-5.6.44-linux-glibc2.12-x86_64]# cat /proc/sys/vm/overcommit_memory
0
那这个overcommit_memory参数是什么?
默认值为:0
从内核文档里得知,该参数有三个值,分别是:
0:当用户空间请求更多的的内存时,内核尝试估算出剩余可用的内存;
1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算;
2:当设这个参数值为2时,内核会使用一个决不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。
也就是说主机内存分配策略也能保证有足够内存的话全量分配,那就不是分配策略的问题。
尝试可行性解决办法
依照上面所述总结结果:
当发生内存竞争时,innoDB的内存如果获取不足就会导致MySQL服务中断。
解决办法:
减小innoDB内存。
解决方式:
修改/etc/my.cnf
文件部分内容如下图所示:
放开注释并修改大小为50M,保存退出。
重启MySQL服务:
[root@zhrb mysql-5.6.44-linux-glibc2.12-x86_64]# service mysql start
Starting MySQL.. SUCCESS!
启动成功。
本次故障排查及解决过程简单截图如下:
MySQL服务中断后重启失败及解决办法(个例)相关推荐
- ionic 安装 inappbrowser 插件后编译失败的解决办法
layout: post title: ionic 安装 inappbrowser 插件后编译失败的解决办法 tags: description: 学习使用 ionic 框架开发 ios app 时遇 ...
- linux mysql端口启动失败怎么办,Linux下apache mysql等服务修改默认端口后无法正常启动解决办法...
Linux下apache mysql等服务修改默认端口后无法正常启动解决办法 linux下 apache 等服务修改默认端口后无法正常启动解决办法 服务器上装了两个webserver,一个是nginx ...
- mysqlfront连接MySQL错误_使用MySql-Front远程连接MySQL失败的解决办法
新安装的mysql默认是root用户,且密码为空,默认端口是3306.通过SSH可以连接并且登录,但是使用MySQL-Front等客户端连接失败. 解决办法: 1.确认Linux防火墙3306端口打开 ...
- apmserv5.2.6 mysql启动失败_win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法...
win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法 1.APMServ程序所在路径不能含有汉字和空格.例子:D:\r\APMServ5.2.6\ 2.去掉 ...
- 记一次mysql数据库转储sql文件到另外一台电脑运行失败的解决办法
记一次mysql数据库转储sql文件到另外一台电脑运行失败的解决办法 将转储的sql文件中创建触发器相关的语句剪切复制到另外的一份文本,保存重新运行sql文件,成功后在把之前剪切的语句复制过来在运行一 ...
- win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法
win7(xp) APMServ5.2.6 Apache启动失败,MYSQL启动失败 的解决办法 1.APMServ程序所在路径不能含有汉字和空格.例子:D:\r\APMServ5.2.6\ 2.去 ...
- MySQL启动失败——MySQL服务无法启动原因及解决办法
MySQL启动失败--MySQL服务无法启动原因及解决办法 MySQL启动失败 MySQL启动失败--MySQL服务无法启动原因及解决办法 1.缺乏my.ini文件 2.缺乏data文件 3.端口占用 ...
- docker容器mysql修改密码后重启失败
解决docker容器中mysql修改密码后重启失败 前言 本文内容:1如何修改mysql密码,本地mysql也可以这么修改:2修改mysql容器的环境变量(其他容器同理)3结束语 在docker运行中 ...
- windows下环境变量配置后没生效,不重启电脑的解决办法
本篇文章主要讲解windows配置了环境变量但没有生效的原因及不重启电脑的解决办法 作者:任聪聪 配置环境变量后显示命令不存在,找不到,现象如下. 主要原因 windows配置完毕环境变量,由于某种原 ...
最新文章
- 链表系列之单链表——使用单链表实现大整数相加
- 机器人 魂斗罗铁血兵团_《魂斗罗铁血兵团:反叛》XBLA游戏下载
- 简单解决XP共享连接数10限制(转)
- EXP 导出出错解决方案
- 判断当前浏览器是不是微信浏览器
- 关于SQL\SQL Server的三值逻辑简析
- php set get 作用_浅谈PHP拦截器之__set()与__get()的理解与使用方法
- 39个seo大师级经典案例
- 2019计算机保研经验记录:南开软院、武大、信工所、南大软院、哈工深
- 词类与句子成分对应关系 —— 状语篇
- php函数形参,PHP中的函数形参的默认值
- 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
- 2018 拼多多 校招真题 最大乘积
- ip-纯真库:批量获取ip归属地
- 居家办公以外一些有意思的事
- 开关电源产生浪涌电流的原因
- 【我是初学者】关于获取配置文件.properties的常见三种方式--只是常见的方式,欢迎牛神来加瓦
- linux输入法搜狗 修复,搜狗输入法自带修复功能,可以解决无法打字的问题
- 线代 | 线性代数的本质 本质 本质 nature
- 钉钉全栈化实践总结-前端篇
热门文章
- win10如何解决Excel双击打开显示灰色空白?
- android端向后台传图片,Android前台从后台下载一张图片 以及 Android前台上传一张图片到后台...
- vue动态设置路由重定向
- Ubuntu添加和设置开机自动启动程序的方法
- 【软件无线电】基于QCustomPlot 实现频谱图、瀑布图、星座图、比特图、音频图
- 利用R语言irr包计算ICC值(组内相关系数)
- Rosalind第10题——ros_bio10_CONS
- 作为一个准研究生,怎样才能在研究生阶段不虚度?
- div的display和visible的区别
- SQL Server 安全认证知识【1】