1.大致流程

将a实例的表的数据迁移到b实例上.

1.在目标实例b上创建一个相同的表

2.在目标库b上执行ALTER TABLE t DISCARD TABLESPACE;

3.在源库a上执行FLUSH TABLES t FOR EXPORT;生成.cfg文件

4.将.ibd文件和.cfg文件拷贝到目标实例b

5.在源库a执行unlock tables;

6.在目标库b执行ALTER TABLE t IMPORT TABLESPACE;

2.详细步骤

 
     1.在b实例上,创建a实例相同database和与表结构.(假设目标表是yy.y)
 b实例上: create database
yy;

在a实例上: show create table y;将建表语句复制到b实例use yy后并执行.  相应表文件是y.frm和y.ibd.

a实例上:

mysql> create database yy;
mysql> use yy;
mysql> create table y (name varchar(10),age int);
mysql> insert into y values ('yy.y',25);
mysql> insert into y values ('yy.y',26);
mysql> insert into y values ('yy.y',27);
 
b实例上:
mysql> create database yy;
mysql> use yy;
mysql> create table y (name varchar(10),age int);

 
  2.在b实例上: ALTER  TABLE
 y  DISCARD
TABLESPACE;

discard的意思就是从数据库detached,会删除ibd文件,保留frm文件。也就意味着,你可以对frm文件操作,比如:rename table,drop
table ,但是不能对ibd文件操作,比如:dml.

b实例上删除y表的数据文件:
[root@lbg2 ~]# cd /home/mysql3306/mysql3306/yy
[root@lbg2 yy]# ls
db.opt  y.frm  y.ibd
mysql> ALTER  TABLE 
y  DISCARD TABLESPACE;
[root@lbg2 yy]# ls
db.opt  y.frm
 
    3.在a实例上,FLUSH
 TABLES  y  FOR
EXPORT;
表y这时候处于quiesce状态,只读,且创建.cfg
metadata文件.

a实例上:

[root@master yy]# ls

db.opt 
y.frm  y.ibd

mysql> FLUSH 
TABLES  y  FOR EXPORT;

[root@master yy]# ls

db.opt 
y.cfg  y.frm  y.ibd

flush tables .. for
export 会加锁,这时候,千万不能退出终端或session,否则加锁无效且.cfg文件自动删除。

 
  4.将a实例中y.cfg和y.ibd拷贝到b实例对应位置.并在b上修改对应权限.

 在a实例:

[root@master yy]# scp y.cfg
root@192.168.88.9:/home/mysql3306/mysql3306/yy

[root@master yy]# scp y.ibd
root@192.168.88.9:/home/mysql3306/mysql3306/yy

在b实例:

[root@lbg2 yy]# ls

db.opt 
y.cfg  y.frm  y.ibd

[root@lbg2 yy]# chown -R mysql.mysql
/home/mysql3306/mysql3306/yy



   5.在实例a执行unlock
tables解锁;

a实例:

mysql> unlock tables;

执行unlock
tables 来释放FLUSH TABLES ... FOR
EXPORT 加的locks。

6.在实例b上导入tablespace: ALTER TABLE y IMPORT
TABLESPACE;

b实例:

mysql> ALTER TABLE y IMPORT
TABLESPACE;

mysql> select * from y;

+------+------+

| name | age  |

+------+------+

| yy.y | 
 25 |

| yy.y | 
 26 |

| yy.y | 
 27 |

+------+------+

完成表空间迁移。

说明:迁移数据会对表加锁.完成迁移后b实例下,依旧保留y.cfg,但解锁后,a实例下y.cfg自动删除.

 

3.innodb可传输表空间注意事项

必须开启 innodb_file_per_table

当这个表处于quiesced状态,甚至不能被select

两边实例的page size 一致

5.7 版本之前,不支持分区表transport外键相关的表,必须设置 foreign_key_checks=0 才能成功

ALTER TABLE ... IMPORT
TABLESPACE 不需要.cfg metadata file
. 但是,这样的话,MySQL就不会对schema进行verificate

5.6以及更高版本,import&export 版本必须在同一个series

在replication环境中,master &
slave 都必须开启 innodb_file_per_table

对于InnoDB general tablespace,不支持discard & import
tablespace

如果两边服务器的table row_format设置的不一样,会导致schema mismatch
error

加密过的InnoDB tablespace 必须要拷贝.cfp 文件

4.MyISAM表空间迁移

1. flush table with read lock

2. 直接复制数据文件和表结构文件

Innodb表空间迁移过程的更多相关文章

  1. Innodb 表空间传输迁移数据

    在mysql5.5之前,mysql实例中innodb引擎表的迁移是个头疼的问题,要么使用mysqldump导出,要么使用物理备份的方法,但是在mysql5.6之后的版本中,可以使用一个新特性,方便地迁 ...

  2. MySQL Innodb表空间不足的处理方法

    官方给出的解决方案: 添加和删除 InnoDB 数据和日志文件 这一节描述在InnoDB表空间耗尽空间之时,或者你想要改变日志文件大小之时,你可以做的一些事情. 最简单的,增加InnoDB表空间大小的 ...

  3. 10. InnoDB表空间加密

    10. InnoDB表空间加密 InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密. 详细信息见官方文档

  4. ibd2sdi — InnoDB表空间SDI提取实用程序

    参考mysql8.0官方文档 https://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html ibd2sdi是一个实用程序,用于从表空间文件中提取 序列化的字 ...

  5. MySQL InnoDB表空间加密

    从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...

  6. Innodb 表空间卸载、迁移、装载

    从MySQL的Innodb特性中我们知道,Inndob的表空间有共享和独享的特点,如果是共享的.则默认会把表空间存放在一个文件中(ibdata1),当开启独享表空间参数Innodb_file_per_ ...

  7. InnoDB表空间、段、区

    1. 表空间是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认,InnoDB存储引擎只有一个表空间ibdata1,即所有数据都存放在这个表空间内.如果用户启用了参数innodb_ ...

  8. Innodb表空间

    Innodb有两种管理表空间的方法 独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件.其中ibd文件包括了单独一个表的数据内容和索引内容. 共享 ...

  9. 019:InnoDB 表空间内部组织结构

    一. 表空间内部组织结构 表空间 内部有多个段对象(Segment) 组成 每个段(Segment)由区(Extent) 组成 每个区(Extent)由页(Page)组成 每个页里面报存数据 (或者叫 ...

随机推荐

  1. 第七章 HTTP协议原理

    一.HTTP协议概述 1.什么是HTTP? HTTP 全称:Hyper Text Transfer Protocol 中文名:超文本传输协议 http就是将用户的请求发送到服务器,将服务器请求到的内容 ...

  2. GoogleHacking基本语法使用

    查看网络后台 intitle:admin 搜索url中的关键字:asp?id= inurl:asp?id=

  3. 选择SaaS平台的那些事

    将近一年多没有更新博客和自己的订阅号.除了本身有点懒之外,也有幸在上半年花了一些时间考出了CISSP.最近也在研究云平台相关的一些课题. 写这篇文章本身是因为在工作中经常有IT乃至业务的同事会问及企业 ...

  4. 反射(Reflection)

    Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...

  5. 小C和小派的缠绵爱情——C语言调用Python代码

    我妒忌你的开源,你眼红我的速度,不如我们就在一起吧! --------SJ2050 2019.4.9号更新:实现在未安装python环境的机子上运行调用了python程序的C语言代码! 文章目录 环境 ...

  6. Django采坑日志(django2.0)

    使用Mariadb时出现的问题 "Unknown system variable 'transaction_isolation'" 解决办法:修改django/db/backend ...

  7. ssm整合之web.xml文件

    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...

  8. onedrive同步其他任意文件夹

    经过多次尝试,成功同步其他文件夹内容到onedrive,最后那次尝试是成功的,前面是可能犯的错误.注意3点:1. 用管理员身份运行cmd:2. 路径有空格时用双引号括起来:3. /d后面接的第一个路径 ...

  9. Paraview教程

    快速入门 https://www.youtube.com/watch?time_continue=1017&v=Y1RATo2swM8 Cyprien Rusu系列 Paraview Vide ...

  10. origin把点图和线图放在一起

    首先分别做好点图和线图在两个graph中,然后选中其中一副图(点图或者线图),然后按下图选择: 如果有多个图,可以在弹出窗口中选择多个sheet.