Spec-Zone .ru
спецификации, руководства, описания, API

14.2.4.6. Запуск InnoDB на Поврежденной Базе данных

Чтобы исследовать повреждение страницы базы данных, Вы могли бы вывести свои таблицы от базы данных с SELECT ... INTO OUTFILE. Обычно, большинство данных, полученных таким образом, неповреждено. Серьезное повреждение могло бы вызвать SELECT * FROM tbl_name операторы или InnoDB фоновые работы, чтобы отказать или утверждать, или даже вызвать InnoDB восстановление отката вперёд, чтобы отказать. В таких случаях используйте innodb_force_recovery опция, чтобы вызвать InnoDB механизм хранения, чтобы запустить, препятствуя тому фоновым работам работать, так, чтобы можно было вывести свои таблицы. Например, можно добавить следующую строку к [mysqld] раздел Вашего файла опции прежде, чем перезапустить сервер:

[mysqld]innodb_force_recovery = 4

innodb_force_recovery 0 по умолчанию (нормальный запуск без принудительного восстановления). Допустимые ненулевые значения для innodb_force_recovery следовать. Большее число включает все предосторожности меньших чисел. Если можно вывести свои таблицы со значением опции самое большее 4, то Вы относительно безопасны, что только некоторые данные на поврежденных отдельных страницах теряются. Значение 6 является более решительным, потому что страницы базы данных оставляют в устаревшем состоянии, которое поочередно может ввести больше повреждения в B-деревья и другие структуры базы данных.

База данных не должна иначе использоваться ни с каким ненулевым значением innodb_force_recovery. Как мера по безопасности, InnoDB предотвращает INSERT, UPDATE, или DELETE операции, когда innodb_force_recovery больше чем 0.

Вы можете SELECT от таблиц, чтобы вывести их, или DROP или CREATE таблицы, даже если принудительное восстановление используется. Если Вы знаете, что данная таблица вызывает катастрофический отказ на откате, можно отбросить это. Можно также использовать это, чтобы остановить безудержный откат, вызванный импортом массы сбоя или ALTER TABLE: уничтожьте процесс mysqld и установите innodb_force_recovery к 3 переводить базу данных в рабочее состояние без отката, тогда DROP таблица, которая вызывает безудержный откат.