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

mysql启动服务时报错

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

看不到报错原因,很慌张,找不到mysql错误日志。

别慌!

1、首先我们要知道service启动的mysql,都会在/etc/init.d/下有个mysql文件:内容部分如下:

可以看出start启动服务时,实际脚本调用的是mysqld_safe启动

2、找到bin/mysqld_safe脚本,部分内容如下:

可以看出mysqld_safe脚本,实际调用的是/usr/sbin文件夹下的mysqld命令

问:mysql_safe和mysqld区别是什么?

mysqld:是mysql数据库的核心程序,用于管理mysql数据库文件和用户的操作

mysql_safe:是mysql的一个守护进程。用于监控mysql服务器的运行状态,并当程序出现问题时重启它

   推荐使用mysql_safe启动mysql。mysql_safe会做如下事情:

  • 检查系统和选项。
  • 检查MyISAM表。
  • 保持MySQL服务器窗口。
  • 启动并监视mysqld,如果因错误终止则重启。
  • 将mysqld的错误消息发送到数据目录中的host_name.err 文件。
  • 将mysqld_safe的屏幕输出发送到数据目录中的host_name.safe文件。

3、所以我们可以直接使用mysqld --defaults-file=/etc/my.cnf --basedir=/usr  --datadir=/mnt/mysql/data --log-error=/mnt/mysql/error.log启动,手动指定--log-error地址,一会去看错误日志

说明使用root用户启动mysql,需要指定 --user=root。mysqld --defaults-file=/etc/my.cnf --basedir=/usr  --datadir=/mnt/mysql/data --log-error=/mnt/mysql/error.log --user=root

执行过后还是启动失败,查看/mnt/mysql/error.log日志,发现如下内容:

发现是binlog找不到文件了。

打开mysql-bin.index文件,去掉这个文件描述就可以了。(我把binlog名称改了,因为文件名乱码,同时也修改了my.cnf的配置)

方法二:

   我上面说了mysql_safe启动会将mysqld的错误消息发送到数据目录中的host_name.err 文件。所以直接去查看data目录中的host_name.err 文件即可

(经过上面的分析过后,才发现早就有错误日志,只是没细心看没找到,尴尬了)

方法三:

可以在my.cnf的mysqld节点下添加log-error=/mnt/mysql/data/error.log (感觉应该也会出来错误日志。我没有试过,以后有机会了试试)

提示:

如果要实在用service mysql start 启动不起来,可以尝试着直接使用mysqld_safe脚本启动

nohup mysqld_safe --datadir="/mnt/mysql/data" --pid-file="/mnt/mysql/data/xxx.pid" 2>&1 &

猜你喜欢

转载自blog.csdn.net/sumengnan/article/details/112517646