InnoDB Принудительное Восстановление

InnoDB Принуждение восстановления 

официальный документ: 
HTTPS: // dev.mysql.com / DOC / RefMan / 5,7 / EN / Принуждение - InnoDB - recovery.html 

На страницу базы данных обследования коррупции, вы можете использовать ВЫБЕРИТЕ таблицу из дампа базы данных. , , Введите внешний остров. Как правило, большая часть данных, полученных этим методом, является полной. Серьезный ущерб может привести к сбою или утверждению оператора SELECT * FROM tbl_name или фоновой операции InnoDB, или даже вызвать сбой восстановления с повтором транзакций InnoDB. В этом случае вы можете использовать опцию innodb_force_recovery, чтобы принудительно запустить механизм хранения innodb во время выгрузки фоновых операций при выгрузке таблиц. Например, перед перезапуском сервера вы можете добавить следующую строку в раздел [ mysqld ] файла опций : 

[ mysqld ] 
innodb_force_recovery =  1
 
warning:
Только установите innodb_force_recovery на значение больше 0 в аварийной ситуации, чтобы вы могли запустить innodb и вывести таблицу. Прежде чем делать это, убедитесь, что у вас есть резервная копия базы данных на случай, если вам потребуется ее воссоздать. Значение 4 или больше может навсегда повредить файл данных. Только после успешного тестирования параметра innodb_force_recovery для отдельной физической копии базы данных вы можете использовать этот параметр 4 или выше на экземпляре производственного сервера. При принудительном восстановлении InnoDB вы всегда должны начинать с InnoDB_force_recovery = 1 и увеличивать это значение только при необходимости. 


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


1 (SRV_FORCE_IGNORE_CORRUPT) 
позволяет серверу работать, даже если он обнаруживает поврежденные страницы. Попытайтесь заставить SELECT * FROM tbl_name пропускать поврежденные записи индекса и страницы, что помогает выводить таблицу. 

2(SRV_FORCE_NO_background) 
Запретить запуск основного потока и всех очищающих потоков. Если происходит сбой во время операции очистки, это значение восстановления предотвратит сбой. 

3 (SRV_FORCE_NO_TRX_UNDO) 
Не запускать откат транзакции после восстановления после сбоя. 

4 (SRV_FORCE_NO_IBUF_MERGE) 
предотвращает операции слияния буфера вставки. Если они вызывают сбой, не делайте этого. Не вычисляет статистику таблицы. Это значение может навсегда повредить файл данных. После использования этого значения будьте готовы удалить и заново создать все вторичные индексы. Установите InnoDB только для чтения. 

5 (SRV_FORCE_NO_UNDO_LOG_scan) 
Не просматривать журнал отмены при запуске базы данных: InnoDB даже обрабатывает незавершенные транзакции как зафиксированные. Это значение может навсегда повредить файл данных. Установите InnoDB только для чтения. 

6 (SRV_FORCE_NO_LOG_Redo) 
Не выполнять повторный просмотр журнала повторов, связанный с восстановлением. Это значение может навсегда повредить файл данных. Устаревать страницы базы данных, что, в свою очередь, может привести к повреждению B-деревьев и других структур базы данных. Установите InnoDB только для чтения. 


Вы можете выбрать из таблицы, чтобы сбросить их. Если значение innodb_force_recovery меньше или равно 3, вы можете удалить или создать таблицу. Перепад таблица поддерживает innodb_force_recovery больше 3, до тех пор , MySQL 5.7 . . 17 . Из MySQL 5.7Начиная с .18, когда значение innodb_force_recovery больше 4, DROP TABLE не допускается . 
Если вы знаете, что данная таблица вызывает сбой при откате, вы можете удалить ее. Если вы столкнулись с неконтролируемым откатом из-за массового импорта или сбоя ALTER TABLE, вы можете прервать процесс mysqld и установить для innodb_force_recovery значение 3, чтобы запустить базу данных без отката, а затем удалить таблицу, вызвавшую неконтролируемый откат. 
Если из-за искажения данных таблицы вы не можете выгрузить весь контент таблицы, запросы, использующие предложение ORDER BY primary_key DESC, могут получить дамп частей таблицы после поврежденной части. 
Если запуск innodb требует более высокого значения innodb force_recovery, возможно, существует поврежденная структура данных, что приводит к сбою сложных запросов (запросов, содержащих WHERE, ORDER BY или другие предложения). В этом случае вы сможете запускать только базовые запросы SELECT * FROM t.

 

рекомендация

отwww.cnblogs.com/zhouwanchun/p/12756177.html