MyISAM
W przypadku tabeli MyISAM mydb.mytable powinieneś mieć trzy pliki
\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
Powinny być już dostępne jako tabela, ponieważ każdy plik zawiera potrzebne dane, metadane i informacje o indeksie. Łącznie tworzą one stół. Brak dostępu do zewnętrznych mechanizmów silnika pamięci masowej.
InnoDB
Spójrz na to obrazowe przedstawienie InnoDB
Jedyną rzeczą, która dołącza ibdata1 do .ibd
plików, jest słownik danych.
Twoim zadaniem, jeśli zdecydujesz się je zaakceptować, jest stworzenie każdego stołu i zamiana w .ibd
Zanim cokolwiek zrobisz, wykonaj pełną kopię „\ bin \ mysql \ mysql5.6.12 \ data” na inną
Oto próbka
Załóżmy, że masz bazę danych mydb
z tabelą mytable
. To znaczy
- Masz folder
\bin\mysql\mysql5.6.12\data\mydb
- Wewnątrz tego folderu masz
Potrzebujesz .frm
. Jeśli spojrzysz na mój post Jak wyodrębnić schemat tabeli tylko z pliku .frm? , możesz pobrać narzędzie MySQL, które może wygenerować kod SQL wymagany do utworzenia tabeli.
Powinieneś teraz wykonać następujące czynności
- Przenieś
mytable.ibd
do\bin\mysql\mysql5.6.12\data
- Uruchom SQL, aby utworzyć tabelę InnoDB
- Zaloguj się do mysql i uruchom
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(spowoduje to usunięcie \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)
- Skopiuj
\bin\mysql\mysql5.6.12\data\mytable.ibd
do\bin\mysql\mysql5.6.12\data\mydb
- Zaloguj się do mysql i uruchom
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(spowoduje to zarejestrowanie \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
w słowniku danych)
Następnie stół mydb.mytable
powinien być w pełni dostępny. Możesz przetestować tę dostępność, po prostu uruchamiając:
SELECT * FROM mydb.mytable LIMIT 10;
Spróbuj !!!
NAPÓJ (Odzyskiwanie danych obejmuje niezbędną wiedzę) Odpowiedzialnie
information_schema.key_column_usage
tabel (prawdopodobnie również inne tabele) nie zwrócą danych przy pierwszym,select
więc musisz wykonać co najmniej jedno zapytanie i odczekać kilka sekund, zanim następne zapytanie będzie mogło działać. (mysql Ver 14.14 Distrib 5.7.19, dla linux-glibc2.12 (x86_64) przy użyciu otoki EditLine)