Ошибка в виде цикличного перезапуска MySQL


Если MySQL сервер перестал работать, но в статусе показано что он запущен, но при этом каждый раз меняется pid, то проблема скорее всего в таблицах innodb. В логах (/var/log/mysqld.log) запуск сервера останавливается на строчке:

InnoDB: Waiting for the background threads to start

Для  исправления ошибки останавливаем MySQL:

service mysqld stop

Если сервер не останавливается, но при этом пишет остановлен, то убиваем процесс и удаляем блокировку:

killall mysqld
rm /var/lock/subsys/mysqld

Добавляем в секции [mysqld] файла /etc/my.cnf следующие строчки 

innodb_force_recovery = 1
innodb_purge_threads=0
port = 3307

Запускаем MySQL. При этом нужно проверить, не меняется ли PID. Для этого последнюю команду запускаем с небольшим интервалом несколько раз:

service mysqld start
service mysqld status

Запускаем проверку баз данных, вводим пароль root пользователя:

 mysqlcheck -rq mysql -p

При необходимости обновляем базы:

mysql_upgrade -p

После этого удаляем или комментируем добавленные нами строчки в файле /etc/my.cnf и перезапускаем MySQL:

service mysqld restart