Сбой MySQL -> восстановление innodb не работает -> пробовать другой путь
Хороший день для тебя.
Я использовал свой сервер MySQL с параметром "innodb_file_per_table", и теперь сервер выходит из строя. Я хочу восстановить этот сервер следующим образом:
- Удалить старый MySQL
- Установите новый MySQL
- Добавьте "innodb_file_per_table" в конфигурацию MySQL
- Копировать папки баз данных (только мои, а не mysql) из старых MySQL/data в новые MySQL/data
В каждой папке у меня есть два файла.frm и.ibd, и похоже, что в этих файлах есть все данные из моих таблиц баз данных.
Но после копирования таблицы в этих базах данных не работают: когда я пытаюсь открыть какую-то таблицу, я получаю сообщение об ошибке: Таблица xxx не существует в движке.
Я попробовал команду РЕМОНТ, но это не помогает.
Если вы знаете, как закончить мой способ ремонта - пожалуйста, помогите.
... Я знаю, что мне нужно также скопировать ibdata1, но он выглядит настолько мертвым для восстановления, поэтому я стараюсь, как и я.
2 ответа
Вам нужно скопировать все, а не только папку данных. Например, без файла ibdata mysql не знает, где хранятся таблицы.
https://serverfault.com/questions/487159/what-is-the-ibdata1-file-in-my-var-lib-mysql-directory
Команда REPAIR не поможет с InnoDB.
Если вам повезет, лучшее, что вы можете сделать, это: 1. Запустите MySQL с innodb_force_recovery=4 (попробуйте 5, 6 значений, если InnoDB не запустится). Убедитесь, что innodb_purge_threads=0. 2. Сбросьте базу данных с помощью инструмента mysqldump. Да, это может быть медленно, но другого выбора нет. 3. Создайте новое пустое табличное пространство InnoDB и перезагрузите дамп.
Если MySQL не запускается с innodb_force_recovery=6, то восстановление из резервных копий является единственным вариантом. Ну, вы можете получить записи из файлов *.ibd, но это утомительная работа - инструмент восстановления данных Google от Percona
ОБНОВЛЕНИЕ: набор инструментов для восстановления данных перенесен на GitHub