mysql error pid file_MySQL重启失败:MySQL server PID file could not be found!

4b36089d82d7e593d233ef4466afc728.png

今天里维斯社发现服务器磁盘空间满了,然后开始清理磁盘,删除mysql-bin.xxxx文件,又修改了/etc/my.cnf文件,禁用以下3行代码;

7d49890559d053ec546f94f400ac99f6.png

于是重启MySQL出现报错:

MySQL server PID file could not be found!

Starting MySQL.....The server quit without updating PID file (/data/mysql/mysql.pid).

4f8e541b74cc8e154f9b401c35f13371.png

在网上找了半天解决方案,都无效。可能每个人的情况不同,于是我又将/etc/my.cnf文件中禁用的3行代码又取消禁用,回传后重启数据库service mysqld restart,竟然奇迹般的好了。

原因分析:为了避免数据库自动生成日志,造成磁盘空间满了情况,我们可以禁用数据库日志功能,直接禁用/etc/my.cnf文件中以下三行:

#log_bin = mysql-bin

#binlog_format = mixed

#expire_logs_days = 7

可能是用书写“#”错误的原因,造成数据库重启失败,所以我又改回禁用之前,竟然成功恢复正常了。

网上其他解决“MySQL server PID file could not be found!”错误的方法

尽管我是用自己的方法解决的,但是可能会遇到其他情况造成这种错误。下面摘抄一些网上比较好的其他解决方案,可以逐一进行排查。(注意:排查前先备份数据,不要觉得麻烦,这很关键!!!)

下面介绍的是mysql启动失败,报错为没有pid文件的问题的各种解决方法。

首先pid文件是mysql启动后,生成的一个文件,里面记录的是mysql当前的进程号,如果创建失败,mysql就无法启动。

可能原因:

mysql的端口被占用生成pid文件的目录mysql的权限不足进程里已经存在mysql进程mysql对应的my.cnf配置文件错误mysql的启动脚本有问题mysql有残余数据影响了服务的启动

问题一:端口被占用

<1>如果你启动的这个mysql的端口已被其他服务占用,应修改对应my.cnf中的端口号为其他端口,然后重启mysql.

[mysqld]port=3307<2>如果在重启mysql前,已有该mysql的进程,建议kill掉再重启

问题二:生成pid文件的目录mysql的权限不足

<1>找到指定的mysql的数据存放目录并授权

chown -R mysql.mysql /data/mysql<2>如果授权后,仍无法启动。可以自己touch一个以主机名命名的pid文件,再启动

cd /data/mysqltouch node1.pid

问题三:可能进程里已经存在mysql进程

解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

问题四:该mysql对应的my.cnf配置文件错误

<1>查看my.cnf中的port,datadir,basedir,socket等参数的配置是否正确,且配置的目录mysql是否有权限

如果修改了my.cnf文件,注意检查拼写错误。

问题五:mysql的启动脚本有问题

<1>当不确定启动脚本或mysql.server配置文件内参数是否正常时,先使用mysqld_safe方式启动,查看是否可启动

(先cd到mysql的安装根目录)

./mysqld_safe --defaults-file=/etc/mysql_3306/my.cnf --user=mysqlor./mysqld_safe --defaults-file=/etc/mysql/3306/my.cnf --basedir=/Apk/install/mysql --datadir=/mysql/data/ --pid-file=/mysql/data/mysql.pid --socket=/mysql/data/mysql.sock --port=3306<2>如果可以启动,那么需要查看mysql启动脚本或mysql.server配置文件内参数并进行修改

重点看下面两个参数

basedir

datadir

问题六:该mysql有残余数据影响了服务的启动

<1>去mysql的数据存放目录进行删除,然后重启

cd /data/mysql/rm -r *index/etc/init.d/mysql start

<2>如果还是无法启动,去mysql的数据存放目录进行再删除,然后启动

(如果数据库不是新安装的且数据仍在使用,不建议删除ib开头的文件。如果删除后,要使用备份对数据库进行恢复)

cd /data/mysql/rm -r *indexrm -r ib*

<3>备注

如果是把mysql的数据存放目录下的文件都删除了,应重新进行初始化。初始化后,进行启动。

例如:

/Apk/install/mysql/mysql-5.5.32/script/mysql_install_db --user=mysql --basedir=/Apk/install/mysql/mysql-5.5.32 --datadir=/Apk/data/mysql_3306/data --pid-file=/Apk/data/mysql_3306/data/mysql.pid --socket=/tmp/mysql_3306.sock --port=3306作者:里维斯社博客,欢迎分享!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值