mysql 案例 ~ 表空間遷移數據與數據導入



一  簡介:mysql5.6+的表空間傳輸
二 目的:復制數據到另一個表
三 步驟
   1 create table b like a ->創建一個空表
   2 alter table b discard tablespace -> 禁用空表的表空間,用於刪除b的ibd文件
   3 alter table a for export ->會生成一個cfg文件,對於全局來說 表是只讀狀態,要非常注意
   4 cp a.cfg b.cfg && cp a.ibd b.ibd  && chown -R mysql:mysql b.cfg b.ibd->拷貝cfg和ibd文件進行復制授權
   5 unlock tables -> 拷貝完成進行解鎖
   6 alter table b import tablespace -> 進行數據字典注冊,這里需要注意,因為涉及到數據頁的table_id的修改,可能會耗費時間,但是比dump還是快
   7 select count(*) from b 進行驗證
四 總結
   mysql表空間的遷移能快速的遷移大表,但是有自身局限性,適用以下場景
   1 冷數據表的復制,由於需要鎖表,所以不能遷移熱表
   2 大表數據的恢復,線上DDL操作失誤,需要恢復時,利用備份+binlog進行恢復后,表空間遷移進行導入

五 load data: 

   0 語法

     load data infile "/data/mysql/e.sql" into table e fields terminated by ',';

   1 過程

      1 讀取csv文件,判斷字段是否和表字段相符,然后寫入innodb表中

      2 讀完全部csv文件數據

      3 進行事務提交,否則事務回滾

   2 load data注意事項

        1 在遠程客戶端使用load data load infile的話 1 需要添加FILE權限 2需要添加load讀取客戶端文件

        2 load data相對file較快是因為讀取文件速度遠遠大於讀取表數據的速度,因為文件已經預先進行了讀取

        

          

    


免責聲明!

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



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