1118ALTER TABLE tabname DISCARD TABLESPACE快速導入數據利用表空間


-- 快速導入數據
如果你有.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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM