DEV Community

Андрей Викулов (VProger)
Андрей Викулов (VProger)

Posted on • Originally published at viku-lov.ru on

MySQL не запускается в BitrixVM: ошибка Unix socket lock file is empty

MySQL не запускается в BitrixVM: ошибка Unix socket lock file is empty

Недавно столкнулся с интересной проблемой на сервере с BitrixVM и Percona Server 5.7. На первый взгляд MySQL отказывался запускаться без каких-либо очевидных причин, а systemd выводил довольно бесполезное сообщение:

Initialization of mysqld failed: 0
Enter fullscreen mode Exit fullscreen mode

Разберёмся, как диагностировать подобную проблему и почему в итоге помогло удаление файлов mysqld.sock и mysqld.sock.lock.

Симптомы

При попытке запуска MySQL сервис постоянно падал:

systemctl restart mysqld
Enter fullscreen mode Exit fullscreen mode

Проверка статуса показывала:

systemctl status mysqld
Enter fullscreen mode Exit fullscreen mode

Результат:

Initialization of mysqld failed: 0
Enter fullscreen mode Exit fullscreen mode

При этом в системном журнале не было подробностей, поэтому пришлось смотреть лог MySQL.

Анализ логов

Открываем журнал ошибок:

tail -200 /var/log/mysql/error.log
Enter fullscreen mode Exit fullscreen mode

В логе обнаружилась настоящая причина:

[ERROR] Unix socket lock file is empty /var/lib/mysqld/mysqld.sock.lock.
[ERROR] Unable to setup unix socket lock file.
[ERROR] Aborting
Enter fullscreen mode Exit fullscreen mode

Самое интересное — InnoDB успешно проходил инициализацию:

InnoDB: Percona XtraDB started
Enter fullscreen mode Exit fullscreen mode

То есть проблема была не в таблицах, не в повреждении базы данных и не в InnoDB.

Что такое mysqld.sock и mysqld.sock.lock

MySQL использует Unix Socket для локальных подключений.

На сервере обычно присутствуют файлы:

/var/lib/mysqld/mysqld.sock
/var/lib/mysqld/mysqld.sock.lock
Enter fullscreen mode Exit fullscreen mode

Это служебные файлы.

Они не содержат данные базы и создаются автоматически при запуске сервера MySQL.

Если сервис завершился аварийно или файловая система была переполнена, эти файлы могут остаться в некорректном состоянии.

Дополнительная проблема

Параллельно обнаружилось, что корневой раздел практически полностью заполнен:

df -h
Enter fullscreen mode Exit fullscreen mode

Результат:

/dev/vda1 158G 156G 2.3G 99%
Enter fullscreen mode Exit fullscreen mode

Недостаток свободного места часто становится причиной подобных ошибок.

Решение

Сначала убедился, что процесс MySQL полностью остановлен:

pkill mysqld
Enter fullscreen mode Exit fullscreen mode

После этого удалил служебные файлы:

rm -f /var/lib/mysqld/mysqld.sock
rm -f /var/lib/mysqld/mysqld.sock.lock
Enter fullscreen mode Exit fullscreen mode

Запустил сервис заново:

systemctl start mysqld
Enter fullscreen mode Exit fullscreen mode

После очистки повреждённого lock-файла сервер успешно стартовал.

Важно

Удаление файлов:

mysqld.sock
mysqld.sock.lock
Enter fullscreen mode Exit fullscreen mode

не приводит к потере данных.

Это временные служебные файлы, которые MySQL создаёт автоматически при запуске.

Однако выполнять удаление следует только после полной остановки сервиса.

Что проверить дополнительно

Если проблема повторяется:

Свободное место

df -h
Enter fullscreen mode Exit fullscreen mode

Размер каталогов

du -xh / --max-depth=1 | sort -hr
Enter fullscreen mode Exit fullscreen mode

Логи MySQL

tail -200 /var/log/mysql/error.log
Enter fullscreen mode Exit fullscreen mode

Активные процессы

pgrep -a mysqld
Enter fullscreen mode Exit fullscreen mode

Вывод

Если MySQL в BitrixVM или CentOS неожиданно перестал запускаться, а в логах присутствует ошибка:

Unix socket lock file is empty
Enter fullscreen mode Exit fullscreen mode

не спешите восстанавливать базы или искать повреждение InnoDB.

В большинстве случаев проблема связана с повреждённым socket lock-файлом или нехваткой места на диске. Проверка логов и очистка служебных файлов позволяют восстановить работу сервиса за несколько минут.

Read more on Viku-Lov Studio

Top comments (0)