MySQL守护进程锁问题

Sam*_*ing 6 mysql debian socket

昨晚,我的 MySQL 服务器意外宕机。在尝试重新启动(使用service mysql restart- 我是 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/mysqldtouch /var/run/mysqld/mysqld.sock.lockapt-get install mysql-community-server --reinstall。没运气。

我环顾四周,找不到解决方案。这里有什么帮助吗?

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

小智 11

对未来旅行者的注意:这取决于您的具体配置,但这可能是 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来修复它。


Sam*_*ing 1

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