MyISAM
Для таблиці MyISAM mydb.mytable у вас повинно бути три файли
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
Вони вже повинні бути доступними у вигляді таблиці, оскільки кожен файл містить необхідні дані, метадані та інформацію про індекс. У сукупності вони формують таблицю. Немає жодних механізмів зовнішнього зберігання для доступу.
InnoDB
Погляньте на це живописне представлення InnoDB
Єдине, що додає ibdata1 до .ibd
файлів, - це словник даних.
Ваша місія, якщо ви вирішите її прийняти, - це створити кожну таблицю і поміняти місцями .ibd
Перш ніж робити щось, зробіть повну копію "\ bin \ mysql \ mysql5.6.12 \ даних" до іншого
Ось зразок
Припустимо, у вас є база даних mydb
з таблицею mytable
. Це означає
- У вас папка
\bin\mysql\mysql5.6.12\data\mydb
- Всередині цієї папки у вас є
Вам потрібна .frm
. Якщо ви подивитесь на мій пост Як можна отримати схему таблиці лише з файлу .frm? , ви можете завантажити утиліту MySQL, яка може генерувати SQL, необхідний для створення таблиці.
Тепер вам слід зробити наступне
- Перейти
mytable.ibd
до\bin\mysql\mysql5.6.12\data
- Запустіть SQL, щоб створити таблицю InnoDB
- Увійдіть до mysql та запустіть
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(це буде видалено \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)
- Скопіюйте
\bin\mysql\mysql5.6.12\data\mytable.ibd
в\bin\mysql\mysql5.6.12\data\mydb
- Увійдіть до mysql та запустіть
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(це зареєструється \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
у словнику даних)
Після цього стіл mydb.mytable
повинен бути повністю доступним. Ви можете перевірити цю доступність, просто запустивши:
SELECT * FROM mydb.mytable LIMIT 10;
Спробувати !!!
DRINK (Відновлення даних включає необхідні знання) відповідально