LINUX.ORG.RU
ФорумAdmin

MySQL восстановление InnoDB


0

3

Недавно перестал работать zabbix. Оказалось, что не поднимается база после перезагрузки сервера.

Проблема, как я понял в файле ibdata1, а конкретнее в таблице zabbix.history.

База поднимается только с параметром innodb_force_recovery, при этом пишет в лог:

140510 23:59:24  InnoDB: Page checksum 1056052232, prior-to-4.0.14-form checksum 2556165064
InnoDB: stored checksum 1056052232, prior-to-4.0.14-form stored checksum 2855696032
InnoDB: Page lsn 25 1497914638, low 4 bytes of lsn at page end 1494816398
InnoDB: Page number (if stored to page already) 4659,
InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) 0
InnoDB: Page may be a system page
InnoDB: Database page corruption on disk or a failed
InnoDB: file read of page 4659.
InnoDB: You may have to recover from a backup.
InnoDB: It is also possible that your operating
InnoDB: system has corrupted its own file cache
InnoDB: and rebooting your computer removes the
InnoDB: error.
InnoDB: If the corrupt page is an index page
InnoDB: you can also try to fix the corruption
InnoDB: by dumping, dropping, and reimporting
InnoDB: the corrupt table. You can use CHECK
InnoDB: TABLE to scan your table for corruption.
InnoDB: See also http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: about forcing recovery.
Но при попытке сделать SELECT из этой таблицы, MySQL падает c бинарными дампами в логах. Эту таблицу уже никак не восстановить?

CHECK TABLE делал?
В крайнем случае историю можно и дропнуть, не хорошо конечно, но как правило не критично.

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Делал, тоже падает база:

mysql> check table zabbix.history;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    1
Current database: *** NONE ***

ERROR 2013 (HY000): Lost connection to MySQL server during query
mysql>
Проблема в том, что хотелось бы историю посмотреть. Но даже если и дропать, то как? При любом обращении к этой таблице база падает.

generator ★★★
() автор топика

После поднятия базы делаем дамп в этом режиме, а потом дамп разворачиваем. Если дамп сообщает об ошибках, подбираем экспериментально другие значения параметра innodb_force_recovery

petav ★★★★★
()
Ответ на: комментарий от petav

Со всеми параметрами innodb_force_recovery выше двух, база поднимается, но при любой попытке доступа падает.

generator ★★★
() автор топика
Ответ на: комментарий от MikeDM

История заббикса не такие ценные данные. Мне сейчас уже скорее просто интересно, как поднять базу. Я даже готов дропнуть эту таблицу, но ведь не дропается же :)

generator ★★★
() автор топика
Ответ на: комментарий от generator

Со всеми параметрами innodb_force_recovery выше двух, база поднимается, но при любой попытке доступа падает.

Какой попытке доступа, mysqldump?

petav ★★★★★
()
16 февраля 2015 г.
Ответ на: комментарий от generator

Вам удалось победить это? Сегодня у меня та же проблема появилась. И тоже с zabbix.history. Бинарные логи и перезапуск... Дропнуть даже не могу.

as_lan ★★
()
Ответ на: комментарий от as_lan

надо сделать копию файлов при остановленном mysql

остановить приложение

дампить по одной таблице

таблицы где падают - пропускать (только дожидаться пока mysql стартует)

Альтернатива - в percona server (ставить ту же ветку т.е. 5.5 на 5.5) есть опция пропускать повреждённые таблицы.

anonymous
()
Ответ на: комментарий от as_lan

Нет. К сожалению не было времени разбираться.

generator ★★★
() автор топика
Ответ на: комментарий от as_lan

Точно такая же ситуация была с месяц назад у меня на CentOS 7 + MariaDB 5.5. Параметр innodb_file_per_table = 1, и оказалось, что table.ibd битой таблицы стал файлом нулевого размера. Соответственно ничего не смогло помочь оживить таблицу, кроме восстановления из бекапа.

Alternating_Current
()
Ответ на: комментарий от Alternating_Current

Да. Мне тоже только бекап и помог. Нашел бекап недельной давности и восстановил его.

as_lan ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.