Starting MySQL. ERROR! The server quit without updating PID file 解决方法

我的服务器环境是LNMP一键安装包(lnmp.org),服务器一直是正常的,昨天还好好的,今天早上 起来,结果朋友反映网站访问不了,数据库连接不上,我打开服务器发现根本没有mysql这个进程,mysql无故被关闭了,我再用命令“lnmp mysql start"或“/etc/init.d/mysql”结果报了如下完整错误:

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.pid).

中文翻译

启动MySQL。 错误! 服务器退出而不更新PID文件(/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.pid)。

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.pid).

 

解决方法

最初,根据我的经验,我以为是“iZbp1fsaxsfwrm9091mcc6Z.pid”文件的问题。毕竟以前也遇到过类似的问题。我最初解决经过如下:

 

1、给755权限

$ chmod /usr/local/mysql/var/

 

2、看是否有 pid 文件?

$ ls -al /usr/local/mysql/var/

结果不用说,是没有的。

 

3、没有就创建一个pid 文件

$ cd /usr/local/mysql/var/
$ touch iZbp1fsaxsfwrm9091mcc6Z.pid

 

4、给pid文件权限755

$ chmod iZbp1fsaxsfwrm9091mcc6Z.pid

 

5、给pid文件所属用户及所属组为mysql

chown mysql:mysql iZbp1fsaxsfwrm9091mcc6Z.pid

 

当这些设置成功以后,我再用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql,结果还是报了一样的错误。只好开始踏入新的解决问题过程:

 

既然按照上面操作后,启动mysql还报错,说明方法不对,既然不对,遇到这种问题,最好的解决办法就是查看mysql错误日志,看日志才能找到原因,找到了原因,解决起来就容易多了。由于我是用的LNMP一键安装包,mysql错误日志路径是:

/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.err

 

1、我用vim命令查看mysql错误日志,向下翻到最新的mysql错误日志:

vim /usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.err

 

2、得到最新的ERROR mysql错误日志如下:

InnoDB: mmap(137363456 bytes) failed; errno 12
2019-06-08 09:08:05 14335 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' init function returned error.
2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2019-06-08 09:08:05 14335 [ERROR] Unknown/unsupported storage engine: InnoDB
2019-06-08 09:08:05 14335 [ERROR] Aborting

 

通过前面启动mysql的错误再与mysql错误日志错误相结合,得到了如下结果:这是由于内存不足造成的,默认情况下mysql给InnoDB分配的内存是128M,而我的服务器内存总共才2G,都已经用了近1.6G了。

可以用"free -m"命令来查看自己服务器的内存:

$ free -m

free -m

注意:如果你发现你服务器你什么都没有操作过,免费内存却变小了,不妨重启一下服务器系统。

 

3、修改mysql配置文件my.cnf,添加如下设置参数:把mysql给InnoDB分配的内存设置为8M

innodb_buffer_pool_size = 8M

 

4、现在,我再用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql,结果出现了“Success”,说明成功了。

 

总结:

当mysql启动不了,如果根据启动报错解决不了,一定要学会看mysql错误日志。毕竟每个人所遇的情况不一定都是一样的,造成mysql启动不了的原因真的是太多了。

拿我这个例子来说,可以直接视为服务器配置不行,太低了,需要考虑服务器升级,为什么我要这么说呢?因为就算我设置成了“innodb_buffer_pool_size = 8M”,当时能正常,但只要访问的人数多了,mysql又会被关闭。毕竟这是我朋友“图便宜买老牛”买的一台阿里云服务器。

    A+
发布日期:2019年06月08日 10:45:23  所属分类:MySQL
最后更新时间:2021-07-07 14:35:40
付杰
  • ¥ 388.0元
  • 市场价:388.0元
  • ¥ 159.0元
  • 市场价:499.0元
  • ¥ 129.0元
  • 市场价:199.0元
  • ¥ 0.0元
  • 市场价:199.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  0

  1. 头像 傻逼 4

    太刁了,就该看日志