Функционирование большинства веб-сайтов в сети Интернет во многом зависит от используемого движка. Чаще всего это MySQL или его альтернативный вариант – MariaDB. В результате изменения некоторых настроек может произойти следующая ситуация: движок отказывается запускаться. Это может доставить много хлопот в том случае, если такое происходит на сервере публичного проекта.
Так как любая проблема имеет решение, остается найти необходимый «ключик».
Содержание
Основные причины, почему не стартует mysql / MariaDB server
При запуске сервиса может быть использован systemd. Это приведет к ошибке – на экране появится соответствующий текст:
«failed to start mysql server»
Обычному пользователю подобный текст ни о чем не скажет. Отходя в сторону от «шифров», следует уделить особое внимание возможным причинам сбоя:
- Допущенные ошибки в синтаксисе конфигурационного файла;
- Заданы неправильные настройки;
- Нехватка памяти;
- Трудности с правами доступа;
- Не свободен сетевой порт;
- Повреждение таблиц баз данных. Обычно это происходит когда сервер выключился аварийно, например когда пропало электричество.
Как видите, существует предостаточно потенциальных причин для сбоя MySQL. И нет никакого смысла рассматривать всевозможные пути решения данной проблемы. Действовать по принципу «пальцем в небо» не стоит. Так как программа выдает определенную ошибку, нужно лишь разобрать её подробнее.
Что делать
Если недавно правили конфиг, необходимо проверить его на ошибки.
$ /usr/sbin/mysqld --help --verbose
Ошибки, найденные в конфигурационном файле, будут указаны в самом начале вывода. Их нужно исправить.
Следующее действие – перезапуск MySQL. Это легко сделать данным способом:
$ systemсtl restart mariadb
В том случае, если ошибка снова появляется на экране, нужно посмотреть статус, так называемый лог запуска.
$ systemсtl status -l mariadb
Теперь необходимо просмотреть лог MySQL. Он может быть не включен, поэтому для начала стоит задать:
$ sudo nano /etc/mysql/my.cnf
Далее еще раз производим запуск сервиса для просмотра ошибок.
На практике это делается следующим способом:
$ tail –f /var/log/mysql/error.log
В логе будут указаны ошибки, которые нужно исправить. На что обратить внимание:
- Fail
- Error
- Warning
- Aborted
Пользователю необходимо исправить проблемы с синтаксисом, а также устранить опции, для которых выделяется большой объем памяти.
Инструменты для проверки и оптимизации сервера
Посредством некоторых инструментов можно произвести мониторинг производительности MySQL. Возможно, работает программа, на которую затрачивается весь ресурс процессора. Это может послужить причиной блокировки машины. Инструменты, представленные ниже, помогут выявить нужный софт:
- Mytop;
- Glances;
- Top;
- Htop;
- Ps.
По окончанию мониторинга станет ясно, что происходит с состоянием памяти и дискового пространства.
Повреждение таблиц баз данных - corrupt database page Mysql
Если не запускается база данных по причине сломанных таблиц, тогда в логе можно увидеть строчку - aborting because of a corrupt database page.
В таком случае починить базу данных можно, рассмотрим процесс восстановления:
- запустить mysql в режиме восстановления. В данном режиме все ошибки игнорируются.
В конфиг /etc/mariadb/my.cnf добавим строчку
innodb_force_recovery = 2
Затем запускаем сервис.
systemctl start mariadb
При помощи утилиты mysqlcheck запустим восстановления таблиц.
mysqlcheck -u root --auto-repair --all-databases
После выполнения команды, удаляем из конфига строчку innodb_force_recovery = 2, затем перезапускаем mysql.
systemctl restart mariadb
Заключение
MySQL имеет достаточно широкое применение, что приводит к немалому числу потенциальных ошибок и сбоев. Рассмотреть всевозможные ошибки в одном материале не представляется возможным. Многое будет зависеть от того, каким образом взаимодействует приложение пользователя с базой данных. Алгоритм необходимых действий под конкретную ситуацию также будет зависеть от того, какую ошибку выдаёт система.
В данной статье указаны самые распространенные проблемы при работе с MySQL и доступные способы решения этих проблем. Следуйте нашим подсказкам, чтобы запустить сервер и продолжить работу в привычном режиме.