十年網站開發(fā)經驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網站問題一站解決
此過程演示如何將常規(guī)InnoDB表從正在運行的MySQL服務器實例復制 到另一個正在運行的實例??梢允褂镁哂形⑿≌{整的相同過程在同一實例上執(zhí)行完整表還原。
為灣里等地區(qū)用戶提供了全套網頁設計制作服務,及灣里網站建設行業(yè)解決方案。主營業(yè)務為成都網站設計、網站制作、灣里網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
在源實例上,創(chuàng)建一個表(如果不存在):
mysql> USE test;
mysql> CREATE TABLE t(c1 INT) ENGINE=InnoDB;
在目標實例上,創(chuàng)建一個表(如果不存在):
mysql> USE test;
mysql> CREATE TABLE t(c1 INT) ENGINE=InnoDB;
在目標實例上,放棄現有表空間。(在導入表空間之前, InnoDB必須丟棄附加到接收表的表空間。)
mysql> ALTER TABLE t DISCARD TABLESPACE;
在源實例上,運行 FLUSH TABLES ... FOR EXPORT以停頓表并創(chuàng)建.cfg元數據文件:
mysql> USE test;
mysql> FLUSH TABLES t FOR EXPORT;
metadata(.cfg)在InnoDB數據目錄中創(chuàng)建 。
注意
該 FLUSH TABLES ... FOR EXPORT語句確保已將對指定表的更改刷新到磁盤,以便在實例運行時可以創(chuàng)建二進制表副本。當 FLUSH TABLES ... FOR EXPORT運行時, InnoDB產生了 .cfg在同一個數據庫的目錄表文件。該.cfg文件包含導入表空間文件時用于模式驗證的元數據。
將.ibd文件和 .cfg元數據文件從源實例復制到目標實例。例如:
shell> scp /path/to/datadir/test/t.{ibd,cfg} destination-server:/path/to/datadir/test
注意
的.ibd文件和 .cfg文件必須釋放共享鎖之前如在下一步中所述被復制。
在源實例上,用于 UNLOCK TABLES釋放通過FLUSH TABLES ... FOR EXPORT以下方式獲取的鎖 :
mysql> USE test;
mysql> UNLOCK TABLES;
在目標實例上,導入表空間:
mysql> USE test;
mysql> ALTER TABLE t IMPORT TABLESPACE;
注意
該ALTER TABLE ... IMPORT TABLESPACE功能不會對導入的數據強制執(zhí)行外鍵約束。如果表之間存在外鍵約束,則應在相同(邏輯)時間點導出所有表。在這種情況下,您將停止更新表,提交所有事務,獲取表上的共享鎖,然后執(zhí)行導出操作。
注意:命令 ALTER TABLE t DISCARD TABLESPACE 會刪除數據文件,誤操作將嚴重的后果
參考文檔:可傳輸表空間示例