Назад | Перейти на главную страницу

Проблема с MySQL Daemon Lock

Прошлой ночью мой сервер 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/mysqld, chmod -R 775 /var/run/mysqld, touch /var/run/mysqld/mysqld.sock.lockи apt-get install mysql-community-server --reinstall. Не повезло.

Я осмотрелся и не нашел решения. Здесь есть помощь?

Примечание: я запускаю Debian 8 (Jessie) с сервером сообщества MySQL 5.7.10.

Примечание для будущих путешественников: это зависит от вашей конкретной конфигурации, но это очень скорее всего проблема с apparmor. Если вы не хотите отключать блокировку, взгляните на системный журнал и посмотрите, не появляется ли у вас apparmor denies в этом файле.

Вы увидите что-то вроде: 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.

Исправлена. Добавить skip-external-Lock к my.cnf под [mysqld] раздел, а затем перезагрузите всю систему. Это должно исправить это для всех, кто это обнаружит. Также, если вы сделали резервную копию своих данных, а затем попытались восстановить, и вам было предложено rm ib* чтобы это работало, вам понадобится ibdata файл.

У меня была такая же проблема с теми же точными сообщениями об ошибках, но в моем случае это было связано с обновлением репозитория приложений, которое закончилось не так, как должно было. Так что в моем случае это просто вопрос ручного запуска mysql_upgrade -u adminname -p а затем перезапуск сервера помог.