在有些情況下,需要對單個或多個大表、分區表進行複制、資料遷移等操作,使用mysqldump可能比較慢,這種情況下可以使用mysql的傳輸表空間進行,以下是操作過程
1.在源伺服器上檢視需要複制的創表結構
2.在目的伺服器上建立對應表
可以看到對應的資料目錄下已經建立了表結構定義檔案與表空間檔案
3.通過discard删除表空間檔案
alter table t_search discard tablespace;
确認表空間檔案被删除
4.在源資料庫中通過export指令導出表空間檔案(同時加了讀鎖)
flush tables t_search for export;
可以看到export到多出了一個cfg檔案,裡面儲存了一些中繼資料資訊
5.将源伺服器上導出的cfg檔案與ibd檔案拷貝至目的伺服器資料庫資料目錄下對應的資料庫目錄test下面
更改cfg檔案與ibd檔案的屬主,chown -R mysql.mysql .
6.在源目的資料庫中解鎖t_search
注意必須要在将cfg檔案與ibd檔案複制後才能解鎖,否則cfg檔案将被删除
7.在目的資料庫import倒入資料完成表空間複制
alter table t_search import tablespace;
8.這種方法也可以用于對分區表的倒入導出
文法為:
alter table t discard partition p0 tablespace;
alter table t import partition p0 tablespace