Khi nhập bất kỳ dữ liệu MySQL nào, ba (3) điều cần phải xem xét.
MyISAM
Nhập bảng MyISAM đơn giản bằng cách di chuyển ba tệp với phần mở rộng .frm
, .MYD
và .MYI
các tệp cho bảng đã cho vào một thư mục MySQL. Ví dụ:nếu tên bảng là mydata thì ba (3) tệp
-
mydata.frm
-
mydata.MYD
-
mydata.MYI
Sau đây có thể là cơn ác mộng của những cơn ác mộng. Nhập khẩu InnoDB hoàn toàn phụ thuộc vào nhiều yếu tố thuộc một trong hai loại:
InnoDB ( innodb_file_per_table đã tắt [mặc định])
Tất cả dữ liệu InnoDB và các trang chỉ mục đều nằm trong /var/lib/mysql/ibdata1
. Tệp này phải được chuyển từ máy nguồn của bạn (Server-S) sang máy đích (Server-T) và được đặt trong cùng một đường dẫn tuyệt đối. Trên thực tế, đây là điều gây sốc:Server-S và Server-T phải giống nhau. Nói cách khác, bạn không thể nhập và xuất InnoDB .ibd
tệp vào các máy khác. Chúng chỉ có thể được nhập và xuất trên cùng một máy .ibd
được tạo vào.
Bạn cũng sẽ phải di chuyển / var / ib / mysql / ib_logfile0 và / var / ib / mysql / ib_logfile1 từ Server-S và đặt chúng trong cùng một đường dẫn tuyệt đối trên Server-T.
Bạn cũng phải đảm bảo rằng mọi biến InnoDB được đặt trong /etc/my.cnf từ Server-S phải được đặt trong /etc/my.cnf trên Server-T.
InnoDB ( innodb_file_per_table đã bật)
Đối với mỗi bảng InnoDB, sẽ có hai tệp. Ví dụ:nếu bảng InnoDB trong cơ sở dữ liệu mydata được gọi là mytable, bạn sẽ có /var/lib/mysql/mydata/mytable.frm
và /var/lib/mysql/mydata/mytable.ibd. .ibd
tệp chứa dữ liệu và các trang chỉ mục cho bảng. Để nhập từng bảng, bạn phải
- Đặt
mytable.frm
trong thư mục/var/lib/mysql/mydata folder
trên Server-T - Đặt
mytable.ibd
trong thư mục/var/lib/mysql/mydata folder
trên Server-T - Chạy
ALTER TABLE mydata.mytable IMPORT TABLESPACE;
Đảm bảo bạn có /var/lib/mysql/ibdata1
ở cùng một nơi mà nó đã được nhập từ đó.
Đạo đức của câu chuyện
Vui lòng không sử dụng kỹ thuật IMPORT TABLESPACE trên các máy chủ khác nhau. Chỉ cần thực hiện mysqldump của mọi thứ và nhập mysqldump. Bãi rác hợp lý luôn là cách an toàn nhất để đi !!!