{}
MYSQL: innodb force recovery и восстановление Mysql из дампа


[mysqld]
innodb_force_recovery = 1

Параметру innodb_force_recovery ставится в соответствие числовое значение от 1 до 6.
С увеличением значения MySQL становится менее чувствителен к целостности таблиц и запускается.
Именно за счет директивы сервер баз данных становится возможным запустить.


Если в логах сервера баз данных встречаются такие сообщения:

InnoDB: Waiting for the background threads to start


В конфигурационный файл необходимо также добавить

innodb_purge_threads=0


Также лучше сменить порт, на котором работает MySQL

port = 3307


Все три параметра добавляются в /etc/mysql/my.cnf

Сейчас MySQL запущен, но в режиме восстановления в котором изменять таблицы нельзя. Выясним какие таблицы повреждены и сделаем дамп.
Проверяем таблицы и ищем Corrupted

mysqlcheck --all-databases


Делаем дамп всех поврежденных таблиц (составляем их список если таблиц много):

mysqldump database_name table_name > database.table.sql


Затем удаляем:

drop table database.table;

В режиме восстановления мы сделали дампы, которые загрузим в MySQL когда он будет запущен в нормальном режиме.
Снова заходим в my.cnf и удаляем директивы innodb_purge_threads=0 и innodb_force_recovery = 1.
Перезапускаем MySQL