MySQL 守护进程锁问题

MySQL 守护进程锁问题

昨晚,我的 MySQL 服务器意外宕机。尝试重新启动(使用service mysql restart- I'm root)时,它只是挂起。使用命令mysql -u root -p,我得到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)。然后我尝试手动启动守护进程(mysqld)。提示会挂起大约 2 秒钟,然后返回。仔细检查错误日志后,我得到:

2016-01-22T19:18:32.399584Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.

2016-01-22T19:18:32.399622Z 0 [ERROR] Unable to setup unix socket lock file.

2016-01-22T19:18:32.399646Z 0 [ERROR] Aborting

然后我又尝试了、 和chown mysql /var/run/mysqldchmod -R 775 /var/run/mysqld没有成功。touch /var/run/mysqld/mysqld.sock.lockapt-get install mysql-community-server --reinstall

我四处寻找,但找不到解决方案。有人能帮忙吗?

注意:我正在运行 Debian 8(Jessie)和 MySQL 社区服务器 5.7.10

答案1

未来旅行者请注意:这取决于您的具体配置,但这是非常可能是 apparmor 的问题。如果您不想禁用锁定,请查看系统日志并查看该文件是否拒绝了 apparmor。

你会看到类似这样的内容:apparmor="DENIED" operation="open" parent=29871 profile="/usr/sbin/mysqld" name="/run/mysqld/mysqld.sock.lock"

可以通过添加/run/mysqld/mysqld.sock.lock rw/etc/apparmor.d/usr.sbin.mysqld其他/run/*条目附近并重新加载 apparmor 来修复此问题。

答案2

已修复。将 skip-external-locking 添加到my.cnf[mysqld]部分下,然后重新启动整个系统。对于发现此问题的任何人来说,这应该可以解决问题。此外,如果您备份了数据,然后尝试恢复并被告知要rm ib*使其正常工作,则需要该ibdata文件。

答案3

我刚刚遇到了同样的问题,错误消息也完全相同,但就我而言,这是由于应用程序存储库的升级没有按预期方式结束。因此,就我而言,只需手动运行mysql_upgrade -u adminname -p然后重新启动服务器即可解决问题。

相关内容