Назад | Перейти на главную страницу

Восстановление InnoDB из ibdata: «пост-стартовый процесс mysql завершен со статусом 1»

Я слишком поздно обнаружил, что сценарий резервного копирования для наших баз данных MySQL не работает должным образом. А именно, когда диск на сервере уже начал выходить из строя, и я вошел через SSH и получил полный экран испорченного бинарного мусора. Восстановление из скудных резервных копий, которые не были просто пустыми файлами .sql.gz, потеряло бы данные примерно за месяц. Мне бы очень понравилось, если бы я смог избежать этого сценария.

Я смог проверить диск и извлечь содержимое /var/lib/mysql каталог со 100 МБ ibdata1, ib_logfile* файлы и .frm и .opt файлы для каждой базы данных в подкаталогах. У меня нет /etc/mysql/my.cnf, кажется, что все внизу потеряно. Нет файлов .ibd, предположительно потому, что innodb_file_per_table был отключен.

Я установил MySQL 5.5 (та же версия, что и неудачная) на моем компьютере разработки и попытался восстановить файлы, следуя рекомендациям. Вот, и Вот. Я положил ibdata1 и файлы .frm и .opt в /var/lib/mysql установите права доступа и владельца для файлов такими же, как и по умолчанию (некоторые mysql:mysql, некоторые mysql:root) после того, как я воссоздал таблицы из схемы с помощью клиента mysql.

Затем я запустил mysqld с командой:

/usr/sbin/mysqld –innodb_log_file_size=4128768 –innodb_force_recovery=6

Он немедленно завершается без вывода. А dmesg | tail показывает целую кучу:

[  781.937089] init: mysql main process (1819) terminated with status 1
[  781.937127] init: mysql respawning too fast, stopped

Обе /var/log/mysql.log и /var/log/mysql.err пусты.

Я пробовал несколько вариантов этой темы восстановления. Я попытался скопировать весь восстановленный каталог данных mysql в /var/lib, Я пробовал перезаписать только ibdata1 и подкаталог базы данных с папками .frm и .opt. Я пробовал с лог-файлами и без них, увеличивая значение восстановления с 1 до 6.

Если я восстановлю исходный каталог mysql, mysqld запустится нормально. Apparmor не работает на машине (у некоторых были проблемы с этим).

Я читал в блоге Percona о производительности MySQL, что можно восстановить данные только из файла ibdata1. У меня есть только две таблицы на базу данных, и у меня есть схема, но, читая README, предоставленный с их инструментом восстановления, похоже, мне, по крайней мере, нужно иметь возможность запустить mysql, чтобы получить информацию о табличном пространстве.