Если обнаружено повреждение страницы базы данных вы можете сохранить таблицы такой командой SELECT … INTO OUTFILE. Как правило, большинство данных, полученных таким образом не повреждено. Тем не менее не исключено к повреждению таблицы может привести и операция select * from table_name или выполнение фоновых операция InnoDB или восстановление повторных транзакций может привести к краху. В таких случаях вы можете использовать опцию innodb_force_recovery (указав её в конфиге БД), после перезапуска вы сможете создать бэкап (дамп) таблиц. Например в ваш конфигурационный файл my.cnf в соответствующий раздел добавьте следующее:
[mysqld]
innodb_force_recovery = 4
По умолчанию innodb_force_recovery = 0 (Обычный запуск без принудительного восстановления), допустимые положительные значения отличные от нуля. Большее значение этой опции включают больше мер по восстановление чем меньшие. Если вам удалось сохранить таблицы с значением innodb_force_recovery = 4, то можете быть уверены, что только незначительная часть данных может быть повреждена. Значение 6 является более радикальным, в следствии чего может быть повреждено больше данных, и структур. Значения, которые может принимать опция innodb_force_recovery:
1 (SRV_FORCE_IGNORE_CORRUPT)
Продолжать работу сервера даже если обнаружены поврежденные страницы. Попробуйте выполнить SELECT * FROM table_name, данные будут выбраны пропуская поврежденные записи, индексы или страницы, что позволит вам создать дамп таблицы.
2 (SRV_FORCE_NO_BACKGROUND)
Предотвратить запуск основного процесса. Это значение параметра для предотвращения сбоя во время восстановления.
3 (SRV_FORCE_NO_TRX_UNDO)
Не запускать откат транзакций после восстнаовления
4 (SRV_FORCE_NO_IBUF_MERGE)
Запретить выполнение операция insert buffer merge. Если они могут привести к повреждения не выполняйте их, не запускайте сбор статистики.
5 (SRV_FORCE_NO_UNDO_LOG_SCAN)
Считать не завершенные транзакции InnoDB завершенными не обращая внимания на лог транзакция.
В нормальном состоянии эта опция не должна быть отлична от 0.
Если Вам необходимо восстановить БД mysql обращайтесь [email protected]