Восстановление, если MYSQL не стартует
Буду писать про виндовый mysql. Допустим папка mysql лежит в d:\mysql
Случилась ситуация, что при запуске сервиса MYSQL, он сразу падает. В логах пишет, что повреждены INNODB таблицы.
Содержание
Делаем архив папки d:\mysql\data, где лежат все таблицы базы данных. (На всякий случай).
Записываем названия баз данных - названия папок в папке d:\mysql\data.
Пытаемся сделать дампы баз
Редактируем d:\mysql\my.ini
В блок [mysqld] вставляем строку с innodb_force_recovery.
[mysqld] innodb_force_recovery=1
И пробуем запустить MYSQL. Для этого с консоли, запущенной от администратора запускаем.
net start mysql
Значения innodb_force_recovery
По умолчанию innodb_force_recovery равен 0 -(обычный режим загрузки без принудительного восстановления). Допустимые значения отличные от нуля для innodb_force_recovery от 1 до 6. Большее значение включает в себя функциональность меньших значений. Например, значение 3 включает в себя все функциональные возможности значений 1 и 2.
Если вы сможете сделать дамп Ваших таблиц со значением innodb_force_recovery равным или меньшим 3, то восстановление относительно безопасно, те только некоторые данные у битых таблиц могут потеряется.
Значение 4 или выше считается опасным , так как файлы данных могут быть повреждены. Значение 6 считается радикальным , поскольку страницы базы данных остаются в устаревшем состоянии, которое , в свою очередь, может привести к сильным повреждениям в B-деревьях и других структурах баз данных.
В качестве меры безопасности, InnoDB предотвращает INSERT , UPDATE или DELETE операции , когда innodb_force_recovery больше 0. При зачениях innodb_force_recovery 4 и больше, InnoDB работает в режиме только для чтения.