När det gäller import av MySQL-data måste tre(3) saker beaktas.
MyISAM
Att importera en MyISAM-tabell är enkelt som att flytta tre filer med tilläggen .frm
, .MYD
och .MYI
filer för den givna tabellen till en MySQL-mapp. Till exempel, om tabellnamnet är mydata, då de tre(3) filerna
mydata.frm
mydata.MYD
mydata.MYI
Följande kan vara mardrömmarnas mardröm. Import av InnoDB beror helt på många faktorer som faller inom en av två kategorier:
InnoDB (innodb_file_per_table inaktiverad [standard])
Alla InnoDB-data och indexsidor finns i /var/lib/mysql/ibdata1
. Den här filen måste flyttas från din källmaskin (Server-S) till måldatorn (Server-T) och placeras i samma absoluta sökväg. Faktum är att här är chockeraren:Server-S och Server-T måste vara samma. Du kan med andra ord inte importera och exportera InnoDB .ibd
filer till andra maskiner. De kan bara importeras och exporteras på samma maskin som .ibd
skapades den.
Du skulle också behöva flytta /var/ib/mysql/ib_logfile0 och /var/ib/mysql/ib_logfile1 från Server-S och placera dem i samma absoluta sökväg på Server-T.
Du måste också se till att varje InnoDB-variabel som ställs in i /etc/my.cnf från Server-S måste ställas in i /etc/my.cnf på Server-T.
InnoDB (innodb_file_per_table aktiverad)
För varje InnoDB-tabell kommer det att finnas två filer. Till exempel, om InnoDB-tabellen i mydata-databasen kallas mytable, kommer du att ha /var/lib/mysql/mydata/mytable.frm
och /var/lib/mysql/mydata/mytable.ibd. .ibd
filen innehåller data och indexsidor för tabellen. För att importera den enskilda tabellen måste du
- Placera
mytable.frm
i/var/lib/mysql/mydata folder
på Server-T - Placera
mytable.ibd
i/var/lib/mysql/mydata folder
på Server-T - Kör
ALTER TABLE mydata.mytable IMPORT TABLESPACE;
Se till att du har /var/lib/mysql/ibdata1
på samma plats som den importerades från.
Berättelsens moral
Använd inte IMPORT TABLESPACE-tekniker på olika servrar. Gör bara en mysqldump av allt och importera mysqldumpen. Logiska soptippar är alltid den säkraste vägen att gå !!!