For så vidt angår import af MySQL-data, skal tre(3) ting overvejes.
MyISAM
Import af en MyISAM-tabel er ganske enkelt som at flytte tre filer med filtypenavnet .frm
, .MYD
og .MYI
filer for den givne tabel i en MySQL-mappe. For eksempel, hvis tabelnavnet er mydata, så de tre(3) filer
mydata.frm
mydata.MYD
mydata.MYI
Følgende kunne være mareridtets mareridt. Import af InnoDB afhænger helt af mange faktorer, der falder ind under en af to kategorier:
InnoDB (innodb_file_per_table deaktiveret [standard])
Alle InnoDB-data og indekssider er placeret i /var/lib/mysql/ibdata1
. Denne fil skal flyttes fra din kildemaskine (Server-S) til målmaskinen (Server-T) og placeres i den samme absolutte sti. Faktisk er her chokeren:Server-S og Server-T skal være de samme. Du kan med andre ord ikke importere og eksportere InnoDB .ibd
filer til andre maskiner. De kan kun importeres og eksporteres på den samme maskine .ibd
blev oprettet den.
Du skal også flytte /var/ib/mysql/ib_logfile0 og /var/ib/mysql/ib_logfile1 fra Server-S og placere dem i den samme absolutte sti på Server-T.
Du skal også sørge for, at hver InnoDB-variabel, der er sat i /etc/my.cnf fra Server-S, skal indstilles i /etc/my.cnf på Server-T.
InnoDB (innodb_file_per_table aktiveret)
For hver InnoDB-tabel vil der være to filer. For eksempel, hvis InnoDB-tabellen i mydata-databasen hedder mytable, vil du have /var/lib/mysql/mydata/mytable.frm
og /var/lib/mysql/mydata/mytable.ibd. .ibd
fil indeholder data og indekssider for tabellen. For at importere den enkelte tabel skal du
- Placer
mytable.frm
i/var/lib/mysql/mydata folder
på Server-T - Placer
mytable.ibd
i/var/lib/mysql/mydata folder
på Server-T - Kør
ALTER TABLE mydata.mytable IMPORT TABLESPACE;
Sørg for at du har /var/lib/mysql/ibdata1
samme sted som den blev importeret fra.
Historiens moral
Brug venligst ikke IMPORT TABLESPACE-teknikker på tværs af forskellige servere. Bare lav en mysqldump af alt og importer mysqldump. Logiske dumps er altid den sikreste vej at gå !!!