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