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.frmtrong thư mục/var/lib/mysql/mydata foldertrên Server-T - Đặt
mytable.ibdtrong thư mục/var/lib/mysql/mydata foldertrê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 !!!