天天看點

mysql使用傳輸表空間對大表或分區表進行快速複制

在有些情況下,需要對單個或多個大表、分區表進行複制、資料遷移等操作,使用mysqldump可能比較慢,這種情況下可以使用mysql的傳輸表空間進行,以下是操作過程

1.在源伺服器上檢視需要複制的創表結構

mysql使用傳輸表空間對大表或分區表進行快速複制

2.在目的伺服器上建立對應表

mysql使用傳輸表空間對大表或分區表進行快速複制

可以看到對應的資料目錄下已經建立了表結構定義檔案與表空間檔案

mysql使用傳輸表空間對大表或分區表進行快速複制

3.通過discard删除表空間檔案

alter table t_search discard tablespace;

mysql使用傳輸表空間對大表或分區表進行快速複制

确認表空間檔案被删除

4.在源資料庫中通過export指令導出表空間檔案(同時加了讀鎖)

flush tables t_search for export;

mysql使用傳輸表空間對大表或分區表進行快速複制
mysql使用傳輸表空間對大表或分區表進行快速複制

可以看到export到多出了一個cfg檔案,裡面儲存了一些中繼資料資訊

5.将源伺服器上導出的cfg檔案與ibd檔案拷貝至目的伺服器資料庫資料目錄下對應的資料庫目錄test下面

mysql使用傳輸表空間對大表或分區表進行快速複制

更改cfg檔案與ibd檔案的屬主,chown -R mysql.mysql .

6.在源目的資料庫中解鎖t_search

mysql使用傳輸表空間對大表或分區表進行快速複制

注意必須要在将cfg檔案與ibd檔案複制後才能解鎖,否則cfg檔案将被删除

7.在目的資料庫import倒入資料完成表空間複制

alter table t_search import tablespace;

mysql使用傳輸表空間對大表或分區表進行快速複制

8.這種方法也可以用于對分區表的倒入導出

文法為:

alter table t discard partition p0 tablespace;

alter table t import partition p0 tablespace