Що се отнася до импортирането на MySQL данни, трябва да имате предвид три(3) неща.
MyISAM
Импортирането на таблица MyISAM е просто като преместите три файла с разширенията .frm
, .MYD
и .MYI
файлове за дадената таблица в папка MySQL. Например, ако името на таблицата е mydata, тогава трите (3) файла
mydata.frm
mydata.MYD
mydata.MYI
Следното може да бъде кошмарът на кошмарите. Импортирането на InnoDB зависи изцяло от много фактори, които попадат в една от двете категории:
InnoDB (innodb_file_per_table деактивирано [по подразбиране])
Всички страници с данни и индекси на InnoDB се намират в /var/lib/mysql/ibdata1
. Този файл трябва да бъде преместен от вашата изходна машина (Server-S) към целевата машина (Server-T) и поставен в същия абсолютен път. Всъщност ето това е шокиращото:Server-S и Server-T трябва да са еднакви. С други думи, не можете да импортирате и експортирате InnoDB .ibd
файлове към други машини. Те могат да бъдат импортирани и експортирани само на една и съща машина .ibd
е създаден на.
Ще трябва също да преместите /var/ib/mysql/ib_logfile0 и /var/ib/mysql/ib_logfile1 от Server-S и да ги поставите в същия абсолютен път на Server-T.
Трябва също така да се уверите, че всяка променлива на InnoDB, зададена в /etc/my.cnf от Server-S, трябва да бъде зададена в /etc/my.cnf на Server-T.
InnoDB (innodb_file_per_table активиран)
За всяка таблица на InnoDB ще има два файла. Например, ако таблицата InnoDB в базата данни mydata се нарича mytable, ще имате /var/lib/mysql/mydata/mytable.frm
и /var/lib/mysql/mydata/mytable.ibd. .ibd
файл съдържа данни и индексни страници за таблицата. За да импортирате отделната таблица, трябва
- Поставете
mytable.frm
в/var/lib/mysql/mydata folder
на сървър-T - Поставете
mytable.ibd
в/var/lib/mysql/mydata folder
на сървър-T - Изпълнете
ALTER TABLE mydata.mytable IMPORT TABLESPACE;
Уверете се, че имате /var/lib/mysql/ibdata1
на същото място, откъдето е внесен.
Морал на историята
Моля, не използвайте техники IMPORT TABLESPACE на различни сървъри. Просто направете mysqldump на всичко и импортирайте mysqldump. Логическите изхвърляния винаги са най-сигурният начин !!!