Сбой 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

Другие вопросы по тегам