您好,登錄后才能下訂單哦!
此過程演示如何將常規InnoDB表從正在運行的MySQL服務器實例復制 到另一個正在運行的實例。可以使用具有微小調整的相同過程在同一實例上執行完整表還原。
在源實例上,創建一個表(如果不存在):
mysql> USE test;
mysql> CREATE TABLE t(c1 INT) ENGINE=InnoDB;
在目標實例上,創建一個表(如果不存在):
mysql> USE test;
mysql> CREATE TABLE t(c1 INT) ENGINE=InnoDB;
在目標實例上,放棄現有表空間。(在導入表空間之前, InnoDB必須丟棄附加到接收表的表空間。)
mysql> ALTER TABLE t DISCARD TABLESPACE;
在源實例上,運行 FLUSH TABLES ... FOR EXPORT以停頓表并創建.cfg元數據文件:
mysql> USE test;
mysql> FLUSH TABLES t FOR EXPORT;
metadata(.cfg)在InnoDB數據目錄中創建 。
注意
該 FLUSH TABLES ... FOR EXPORT語句確保已將對指定表的更改刷新到磁盤,以便在實例運行時可以創建二進制表副本。當 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功能不會對導入的數據強制執行外鍵約束。如果表之間存在外鍵約束,則應在相同(邏輯)時間點導出所有表。在這種情況下,您將停止更新表,提交所有事務,獲取表上的共享鎖,然后執行導出操作。
注意:命令 ALTER TABLE t DISCARD TABLESPACE 會刪除數據文件,誤操作將嚴重的后果
參考文檔:可傳輸表空間示例
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。