-- 快速導入數據
如果你有.ibd文件的一個干凈的備份,你可以按如下操作從被起源的地方恢復它到MySQL安裝中:相當快速
1. 發出這個ALTER TABLE語句:
2. ALTER TABLE tbl_name DISCARD TABLESPACE;
警告:這個語句刪除當前.ibd文件。
3. 把備份的.ibd文件放回到恰當的數據庫目錄。
4. 發出這個ALTER TABLE語句:
5. ALTER TABLE tbl_name IMPORT TABLESPACE;
MYSQL表空間遷移。
表空間遷移。
有如下原因你可能需要將INNODB表復制到不同的數據庫服務器上。
不增加生產負載的情況下生成 一個報表
在一個新的服務器上建立一個和生產上數據相同的表
做一個備份在發生問題或錯誤操作時用於恢復
快速將數據從一個服務器遷移到另一個服務器
命令FLUSH TABLES ... FOREXPORT 使.ibd文件保持一致的狀態。只有文件處於一致的狀態我們才可以復制它。這個文件也會同時創建一個擴展名.cfg的二進制的文件。命令ALTER TABLE ...IMPORT TABLESPACE 會使用這個二進制文件對導入過程進行校驗。
對於 MySQL 5.6.8版本, ALTER TABLE ...IMPORT TABLESPACE 命令不再一定需要一個擴展名為.cfg二進制文件了。但如果真的沒有這個文件我們會收到下面這樣一個警告。
Message:INNODB: IO READ error: (2, NO such FILE OR DIRECTORY) Error opening '.\
test\t.cfg',will attempt TO IMPORT without SCHEMA verification
1row IN SET (0.00 sec)
這個特性有時候還是很有用的。比如,在模式不匹配的導入過程中,或者在一些需要恢復的情景下,元數據又不能從.ibd文件獲得,則這個命令不需要一個擴展名為.cfg的二進制文件就可以導入的特性就很有用。
可遷移表空間的限制:
innodb_file_per_table 一定要打開成 ON. 在共享表空間上的表不能使用這個特性。
當表處理靜默狀態時,只有只讀語句可以使用這張表。
當導入表空間時,目的庫的頁尺寸要和源庫的頁尺寸相匹配。
DISCARD TABLESPACE 不支持分區表。如果你在分區表上使用命令 ALTER TABLE ... DISCARD TABLESPACE 你會看到如下錯誤: ERROR 1031 (HY000): 表引擎沒有這個選項。
DISCARD TABLESPACE 命令不支持有父子關系的表。如果 FOREIGN_KEY_CHECKS 被設置成1. 在使用命令之前我們可以將這一參數設置為0. FOREIGN_KEY_CHECKS=0.
ALTER TABLE ... IMPORT TABLESPACE 命令在導入表時不會檢查主外鍵關系。
如果是實時復制的時候, innodb_file_per_table 必需在主服務和從服務上設置為ON。
