Jeśli chodzi o importowanie jakichkolwiek danych MySQL, należy wziąć pod uwagę trzy (3) rzeczy.
MyISAM
Importowanie tabeli MyISAM jest tak proste, jak przeniesienie trzech plików z rozszerzeniami .frm
, .MYD
i .MYI
pliki dla podanej tabeli do folderu MySQL. Na przykład, jeśli nazwa tabeli to mydata, to trzy (3) pliki
mydata.frm
mydata.MYD
mydata.MYI
To może być koszmar koszmarów. Importowanie InnoDB zależy całkowicie od wielu czynników, które należą do jednej z dwóch kategorii:
InnoDB (innodb_file_per_table wyłączone [domyślnie])
Wszystkie dane i strony indeksowe InnoDB znajdują się w /var/lib/mysql/ibdata1
. Ten plik należy przenieść z maszyny źródłowej (Server-S) na maszynę docelową (Server-T) i umieścić w tej samej ścieżce bezwzględnej. W rzeczywistości tu jest szok:Server-S i Server-T muszą być takie same. Innymi słowy, nie można importować i eksportować pliku InnoDB .ibd
pliki na inne komputery. Można je importować i eksportować tylko na tym samym komputerze co .ibd
został utworzony dnia.
Trzeba by również przenieść /var/ib/mysql/ib_logfile0 i /var/ib/mysql/ib_logfile1 z serwera-S i umieścić je w tej samej ścieżce bezwzględnej na serwerze-T.
Musisz również upewnić się, że każda zmienna InnoDB ustawiona w /etc/my.cnf z serwera-S musi być ustawiona w /etc/my.cnf na serwerze-T.
InnoDB (innodb_file_per_table włączone)
Dla każdej tabeli InnoDB będą dwa pliki. Na przykład, jeśli tabela InnoDB w bazie danych mydata nazywa się mytable, będziesz miał /var/lib/mysql/mydata/mytable.frm
i /var/lib/mysql/mydata/mytable.ibd. .ibd
plik zawiera dane i strony indeksowe dla tabeli. Aby zaimportować pojedynczą tabelę, musisz
- Umieść
mytable.frm
w/var/lib/mysql/mydata folder
na serwerze T - Umieść
mytable.ibd
w/var/lib/mysql/mydata folder
na serwerze T - Uruchom
ALTER TABLE mydata.mytable IMPORT TABLESPACE;
Upewnij się, że masz /var/lib/mysql/ibdata1
w tym samym miejscu, z którego został zaimportowany.
Moralność historii
Nie używaj technik IMPORTOWANIA PRZESTRZENI TABELI na różnych serwerach. Po prostu zrób mysqldump wszystkiego i zaimportuj mysqldump. Zrzuty logiczne są zawsze najbezpieczniejszym sposobem !!!