面试中经常会问有没有试过怎么快速迁移大表:

常用中可以使用mysqldump、mysqlpump、navicate等工具导入导出。我经验中可以采用load data的方式load进去,比insert快很多

MySQL5.7之后可以采用表空间传输方式也是一个很快速的大表迁移方式,适合异机实例间传输迁移,速度非常快。

1.load data方式:

MySQL快速数据导入(可以把数据加载到文件,在采用load方式进入表,速度比mysqldump快好几倍)

select * from ams.t_amsfile into outfile '/home/mysqldata/mysql- sandboxes/3309/mysql-files/ams_t_amsfile';

load data infile '/home/mysqldata/mysql-sandboxes/3309/mysql- files/ams_t_amsfile' into table ams.t_amsfile;

2.表空间传输:(适合INNODB表异机实例间传递)

适用场景:针对大表异机实例迁移,采用表空间传输的方式,会很大程度节约时间,高效迁移。

缺点:传输需要锁住表,对无法中断业务也会有影响

示例1:将InnoDB表复制到另一个实例

此过程演示如何将常规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 DISCARDTABLESPACE

在源实例上,运行 FLUSH TABLES ... FOR EXPORT以停顿表并创建.cfg元数据文件:

mysql> USE test;

mysql> FLUSH TABLES t FOR EXPORT;

metadata(.cfg)在InnoDB数据目录中创建 。

注:

该FLUSHTABLES...FOREXPORT语句确保已将对指定表的更改刷新到磁盘,以便在实例运行时可以创建二进制表副本。当 FLUSHTABLES...FOREXPORT运行时,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功能不会对导入的数据强制执行外键约束。如果表之间存在外键约束,则应在相同(逻辑)时间点导出所有表。在这种情况下,您将停止更新表,提交所有事务,获取表上的共享锁,然后执行导出操作。

3.总结&思考

还有其他快速传输的方式吗? 比如xtrabackup

批量传输mysql的表空间_MySQL 表空间传输相关推荐

  1. mysql 表空间_mysql 表空间

    什么是表空间 默认情况下,InnoDB只包含一个称为系统表空间的表空间,其标识符为0.可以使用innodb_file_per_table配置参数间接创建更多表空间.表空间由一系列文件组成.文件的大小不 ...

  2. 如何批量删除mysql的数据库_如何快速批量删除Mysql数据库中的数据表

    一个mysql数据库中,是可以同时安装几个网站程序的,在使用中,我们只需要用不同的数据库表前缀来区分就可以了.但随着我们不断调试,那么数据 库中的表,就会一天天的多起来,如一个一个的删除就很麻烦.很辛 ...

  3. mysql表类型_MySQL表类型的选择

    P131)创建表时的默认引擎是InnoDB,如果要修改默认的存储引擎,可以在参数文件中设置default-table-type.查看当前的默认存储引擎,可以使用一下命令: 创建新表的时候可以通过增加E ...

  4. mysql 表 类型_mysql表类型

    MySQL支持6种不同的表类型:BDB.InnoDB.HEAP.ISAM.MERGE以及MyISAM.其中 BDB,InnoDB单独属于一类,称为"事务安全型"(transacti ...

  5. mysql约束条件整型_MySQL 表的操作

    表的操作 创建表的完整语法: create table 表名( 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件], 字段名1 字段类型[(宽度) 约束条件] ); ...

  6. mysql myisam表分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)

    一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表 ...

  7. mysql关系表控制_mysql表关系

    一.表的详细操作 1.修改表名 alter table 旧表名 rename 新表名; ​2.修改表的引擎与字符编码 alter table 表名 engine="引擎名" ch ...

  8. mysql right join实例_MySQL表LEFT JOIN左连接与RIGHT JOIN右连接的实例教程

    LEFT JOIN 语法用法与实例MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT ...

  9. mysql查看表描述_MySQL表记录操作介绍(重点介绍查询操作)

    MySQL表记录操作指的是对数据库表中数据进行CRUD增删改查操作,一下将一一给大家介绍,重点介绍查询操作. 一.插入数据(INSERT) 二.删除数据(DELETE) 三.修改数据(UPDATE) ...

  10. MySQL笔记创建表结构_MySQL表结构笔记9

    本篇大纲 MySQL数据表 创建表 创建主键 AUTO_INCREATE 指定默认值 更新表结构 删除表,重命名表 01:表 MySQL 数据库的表是一个二维表,由一个或多个数据列构成 每个数据列都有 ...

最新文章

  1. c#小软件(SaveClassic)开发手记--(1)前言
  2. Solaris 10网络服务
  3. 【FPGA实现GA】基于FPGA的GA优化算法的设计与实现
  4. 数据结构单链表SingleLinkedList,Java实现单链表增删改查
  5. Java GregorianCalendar computeTime()方法与示例
  6. 在Linux下快速搭建LAMP开发平台.doc
  7. 面试官 | 什么是 Lambda?该如何使用?
  8. Linux系统NFS什么意思,挂载NFS到底是什么概念
  9. Linux设备驱动程序学习-Linux设备模型(总线、设备、驱动程序和类)
  10. int 和String之间的互转
  11. 腾讯CDC:用户流失原因调研四步经
  12. 7.5日chinapub生日聚会
  13. 电脑软件:推荐一款本地文档搜索神器,赶快下载试试吧!
  14. 计算机cad模板样例,教你如何新建适合自己的CAD模板
  15. 华为android界面强刷救砖教程,华为手机救砖教程 华为手机开不了机变砖自救
  16. android 把file资源转file,Android文件管理器选择文件,获得文件路径URI转File
  17. Oracle误删除dbf文件和表空间恢复
  18. QT 自定义圆形QLabel 加载圆形图片
  19. 计算机团队霸气名称大全,霸气吃鸡游戏团队名字大全
  20. 通过 blast 结果查看 测序数据fastq是否被污染,以及污染reads所属物种、所占比例

热门文章

  1. 手摸手-100行代码实现一个功能完善的图片懒加载
  2. MyBatis实现模糊查询的几种方式
  3. jQuery淡入淡出
  4. Qt Creator 启动失败 可能的解决办法
  5. 异常:请将注册表值...
  6. 镜像分割与高可用性灾难恢复
  7. SQL Server树型结构数据处理的存储过程
  8. 为 DEV-C++ 生成 libmysql.a 的过程 及 windows下 devc++ c语言访问mysql数据库 环境配置...
  9. 串口通信程序中十六进制格式发送和接收实现
  10. 【OpenCV的cvSplit函数】