欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL Error Log 文件丢失导致The server quit without updating PID file启动失败的场景

程序员文章站 2023-02-03 18:59:24
今天在做mysql sniff测试的时候,中间重启MySQL实例的过程中,出现了"The server quit without updating PID file"这个经典的错误。因为把mysql sniff的日志文件放在了mysql实例的目录中,因此删除mysql sniff日志的时候无意中删除 ......

 

今天在做mysql sniff测试的时候,中间重启mysql实例的过程中,出现了"the server quit without updating pid file"这个经典的错误。
因为把mysql sniff的日志文件放在了mysql实例的目录中,因此删除mysql sniff日志的时候无意中删除了mysql的errorlog文件。
所以一开始怀疑这里出现的错误是mysql sniff进程在mysql实例的datadir下写数据导致的,各种尝试重现都无法重现。
最后仔细回忆了一下错误最开始的一些操作,好似乎跟mysql的errorlog有关,尝试后发现是删除mysql的errorlog之后重启,也可以造成上述错误
MySQL Error Log 文件丢失导致The server quit without updating PID file启动失败的场景


重现方式如下:
1,对于正常运行的mysql实例,直接删除mysql配置的errorlog文件
2,重启mysql实例,发现:the server quit without updating pid file

解决办法1:
step 1,手动生成mysql errorlog文件,errorlog文件名称需要与配置文件中的配置名称保持不一致
step 2,修改mysql相关文件的权限,chown -r mysql:mysql

解决办法2:
1,简单粗暴,直接修改mysql配置文件中的用户,以root用户启动
2,待mysql实例启动后,因为部分文件属主是root,比如每次重启都会重新生成的ibtmp1文件,修改mysql相关文件的权限,chown -r mysql:mysql
3,修改配置文件中的user为mysql,重启实例


最后,为什么删除mysql的errorlog可以导致mysql重启的时候出现"the server quit without updating pid file"?
查阅了很多资料,了解了一下mysql的启动过程,个人推测大概如下
1,mysql实例启动的过程中需要往errorlog中写入启动信息,如果errorlog不存在,则启动失败
2,以root用户启动的时候,root用户的权限更高,应该可以创建errorlog
3,不管怎么解决这个错误,最后一定要修改mysql basedir的属主。