mysql突然挂掉,重新启动提示The server quit without updating PID file
从网上找了各种方法尝试都不管用,开始以下漫长的尝试之路~
首先 从 mysqld_safe 查看日志路径
打开日志看到报错信息:
2021-12-28T12:58:09.193497Z 0 [Note] Server socket created on IP: ‘0.0.0.0’.
2021-12-28T12:58:09.194701Z 0 [ERROR] /usr/local/mysql/bin/mysqld: Can’t create/write to file ‘/tmp/mysqld/mysqld.pid’ (Errcode: 2 - No such file or directory)
2021-12-28T12:58:09.194730Z 0 [ERROR] Can’t start server: can’t create PID file: No such file or directory
提示创建不了PID 文件
看不懂,所以去搜索了下 PID文件是啥,参考文章:
https://blog.csdn.net/weixin_33195162/article/details/113291268(mysql pid文件作用_pid文件的作用) 有兴趣可以去看下,
简单说就是 PID文件记录了mysql程序启动时的进程的ID 。
为解决创建不了PID 文件报错问题,开始以下操作:
打开“/etc/init.d/mysqld”文件查找配置的PID文件路径,我的配置路径是 /tmp/mysqld/mysqld.pid 。 cd到路径下发现文件不存在,所以手动创建。
创建过程:
1、创建文件
cd /tmp/
mkdir mysqld
cd mysqld
touch mysqld.pid
sync
2、修改 /tmp/mysqld/权限为mysql
chown -R mysql /tmp/mysqld
chgrp -R mysql /tmp/mysqld
chmod 777 /tmp/mysqld
创建完成,启动又提示以下错误:
2021-12-28T13:36:28.083680Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2021-12-28T13:36:28.083894Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2021-12-28T13:36:28.083940Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.21-log) starting as process 21446 …
2021-12-29T03:32:45.609894Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2021-12-29T03:32:45.609935Z 0 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306
2021-12-29T03:32:45.609981Z 0 [Note] - ‘0.0.0.0’ resolves to ‘0.0.0.0’;
2021-12-29T03:32:45.610036Z 0 [Note] Server socket created on IP: ‘0.0.0.0’.
2021-12-29T03:32:45.610096Z 0 [ERROR] Could not open unix socket lock file /usr/local/mysql/mysql.sock.lock.
2021-12-29T03:32:45.610105Z 0 [ERROR] Unable to setup unix socket lock file.
2021-12-29T03:32:45.610112Z 0 [ERROR] Aborting
百度了下,解决上面问题,在my.cnf中添加或修改explicit_defaults_for_timestamp=true
注:修改时不一定在my.cnf中,而是在my.cnf中指定的文件中,我的是写在指定的子文件中的,一开始修改时也挺蒙圈的,附一段内容,方便查找修改。
mysql_my_cnf.png
参考文章中说,修改完文件,使文件生效后,再试试创建上面的表,就ok啦~
But 修改完上面的内容,启动还是不OK~~
又报错:Could not open unix socket lock file /usr/local/mysql/mysql.sock.lock
2021-12-29T03:17:13.316858Z 0 [Note] Server socket created on IP: ‘0.0.0.0’. 2021-12-29T03:17:13.316906Z 0 [ERROR] Could not open unix socket lock file /usr/local/mysql/mysql.sock.lock. 2021-12-29T03:17:13.316912Z 0 [ERROR] Unable to setup unix socket lock file. 2021-12-29T03:17:13.316917Z 0 [ERROR] Aborting
解决办法:
进入/tmp/查看mysql.sock.lock,文件大小为0,直接删除该文件rm -rf mysql.sock.lock再启动mysql:service mysqld start。即可启动成功。
终于终于,启动成功了~~~
查了下mysql.sock.lock文件:
mysql.sock.lock是可读文本文件,记录了MySQL启动的PID,对应套接字文件mysql.sock.参考链接 https://bbs.csdn.net/topics/392142823 该问题是因磁盘写满导致MySQL宕了,没能正确删除mysql.sock.lock,进而导致启动失败。