Чтобы восстановить базу данных из .frm
и содержимое из .ibd
Вам необходимо сделать следующее:
1) создать временную базу данных, чтобы избежать внезапной работы с другими базами данных.
CREATE DATABASE soru_sor_recover;
2) генерировать CREATE TABLE
дампов из .frm
файлов (отсюда вам нужно будет установить mysql-utilities
);
mysqlfrm –diagnostic answers.frm >> create_table.txt
mysqlfrm –diagnostic categories.frm >> create_table.txt
mysqlfrm –diagnostic inbox.frm >> create_table.txt
mysqlfrm –diagnostic questions.frm >> create_table.txt
mysqlfrm –diagnostic users.frm >> create_table.txt
3) импорт create_table.txt
с использованием графического интерфейса или просто по терминалу:
mysql -u root -p soru_sor_recover < create_table.txx
4) теперь у нас есть таблицы, но они пусты. поэтому мы должны заменить .ibd
файл пустых таблиц на ibd файлы восстановления. поэтому нам нужно отбросить табличное пространство:
ALTER TABLE answers DISCARD TABLESPACE;
ALTER TABLE categories DISCARD TABLESPACE;
ALTER TABLE inbox DISCARD TABLESPACE;
ALTER TABLE questions DISCARD TABLESPACE;
ALTER TABLE users DISCARD TABLESPACE;
5) замените .ibd
файлы в папке данных и определите пользователя и группу для этих файлов:
cp *.ibd /var/lib/mysql/soru_sor_recover
chown -R mysql:mysql /var/lib/mysql/soru_sor_recover/*.ibd
6) перезапустите mysql:
/etc/init.d/mysql restart
7) включить табличные пространства, перейдите в консоль mysql:
ALTER TABLE answers IMPORT TABLESPACE;
ALTER TABLE categories IMPORT TABLESPACE;
ALTER TABLE inbox IMPORT TABLESPACE;
ALTER TABLE questions IMPORT TABLESPACE;
ALTER TABLE users IMPORT TABLESPACE;
оригинальный источник документации здесь