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