Недавно столкнулся с интересной проблемой на сервере с BitrixVM и Percona Server 5.7. На первый взгляд MySQL отказывался запускаться без каких-либо очевидных причин, а systemd выводил довольно бесполезное сообщение:
Initialization of mysqld failed: 0
Разберёмся, как диагностировать подобную проблему и почему в итоге помогло удаление файлов mysqld.sock и mysqld.sock.lock.
Симптомы
При попытке запуска MySQL сервис постоянно падал:
systemctl restart mysqld
Проверка статуса показывала:
systemctl status mysqld
Результат:
Initialization of mysqld failed: 0
При этом в системном журнале не было подробностей, поэтому пришлось смотреть лог MySQL.
Анализ логов
Открываем журнал ошибок:
tail -200 /var/log/mysql/error.log
В логе обнаружилась настоящая причина:
[ERROR] Unix socket lock file is empty /var/lib/mysqld/mysqld.sock.lock.
[ERROR] Unable to setup unix socket lock file.
[ERROR] Aborting
Самое интересное — InnoDB успешно проходил инициализацию:
InnoDB: Percona XtraDB started
То есть проблема была не в таблицах, не в повреждении базы данных и не в InnoDB.
Что такое mysqld.sock и mysqld.sock.lock
MySQL использует Unix Socket для локальных подключений.
На сервере обычно присутствуют файлы:
/var/lib/mysqld/mysqld.sock
/var/lib/mysqld/mysqld.sock.lock
Это служебные файлы.
Они не содержат данные базы и создаются автоматически при запуске сервера MySQL.
Если сервис завершился аварийно или файловая система была переполнена, эти файлы могут остаться в некорректном состоянии.
Дополнительная проблема
Параллельно обнаружилось, что корневой раздел практически полностью заполнен:
df -h
Результат:
/dev/vda1 158G 156G 2.3G 99%
Недостаток свободного места часто становится причиной подобных ошибок.
Решение
Сначала убедился, что процесс MySQL полностью остановлен:
pkill mysqld
После этого удалил служебные файлы:
rm -f /var/lib/mysqld/mysqld.sock
rm -f /var/lib/mysqld/mysqld.sock.lock
Запустил сервис заново:
systemctl start mysqld
После очистки повреждённого lock-файла сервер успешно стартовал.
Важно
Удаление файлов:
mysqld.sock
mysqld.sock.lock
не приводит к потере данных.
Это временные служебные файлы, которые MySQL создаёт автоматически при запуске.
Однако выполнять удаление следует только после полной остановки сервиса.
Что проверить дополнительно
Если проблема повторяется:
Свободное место
df -h
Размер каталогов
du -xh / --max-depth=1 | sort -hr
Логи MySQL
tail -200 /var/log/mysql/error.log
Активные процессы
pgrep -a mysqld
Вывод
Если MySQL в BitrixVM или CentOS неожиданно перестал запускаться, а в логах присутствует ошибка:
Unix socket lock file is empty
не спешите восстанавливать базы или искать повреждение InnoDB.
В большинстве случаев проблема связана с повреждённым socket lock-файлом или нехваткой места на диске. Проверка логов и очистка служебных файлов позволяют восстановить работу сервиса за несколько минут.

Top comments (0)