Rate this post

Если обнаружено повреждение страницы базы данных вы можете сохранить таблицы такой командой 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]