Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы исследовать повреждение страницы базы данных, Вы могли бы вывести свои таблицы от базы данных с 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-деревья и другие структуры базы
данных.
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
)
Предотвращает вставляют буферные операции слияния. Если они вызвали бы катастрофический отказ, не делает их. Не вычисляет табличную статистику.
5
(SRV_FORCE_NO_UNDO_LOG_SCAN
)
Не смотрит на журналы отмены,
запуская базу данных: InnoDB
обработки даже неполные транзакции как
фиксирующийся.
6
(SRV_FORCE_NO_LOG_REDO
)
Не делает отката вперёд журнала отката в соединении с восстановлением.
С этим значением Вы не могли бы быть в состоянии сделать запросы кроме основного SELECT * FROM t
, без WHERE
, ORDER BY
, или другие пункты. Более сложные запросы могли встретиться с
поврежденными структурами данных и сбоем.
Если повреждение в пределах табличных данных препятствует тому, чтобы Вы вывели все табличное
содержание, запрос с ORDER BY
пункт мог бы быть в состоянии вывести часть таблицы после поврежденной части.primary_key
DESC
База данных не должна иначе использоваться ни с каким ненулевым значением innodb_force_recovery
.
Как мера по безопасности, InnoDB
предотвращает INSERT
, UPDATE
,
или DELETE
операции, когда innodb_force_recovery
больше чем 0.
Вы можете SELECT
от таблиц, чтобы вывести их, или DROP
или CREATE
таблицы, даже если принудительное восстановление используется. Если Вы знаете, что данная таблица вызывает
катастрофический отказ на откате, можно отбросить это. Можно также использовать это, чтобы остановить
безудержный откат, вызванный импортом массы сбоя или ALTER TABLE
: уничтожьте процесс mysqld и установите innodb_force_recovery
к 3
переводить базу данных
в рабочее состояние без отката, тогда DROP
таблица, которая вызывает безудержный
откат.