Innodb表空间迁移过程
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.详细步骤
| 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
|
TABLES y FOR
EXPORT;
| 表y这时候处于quiesce状态,只读,且创建.cfg metadata文件. a实例上: [root@master yy]# ls db.opt mysql> FLUSH [root@master yy]# ls db.opt flush tables .. for |
4.将a实例中y.cfg和y.ibd拷贝到b实例对应位置.并在b上修改对应权限.
| 在a实例:
[root@master yy]# scp y.cfg [root@master yy]# scp y.ibd 在b实例: [root@lbg2 yy]# ls db.opt [root@lbg2 yy]# chown -R mysql.mysql |
5.在实例a执行unlock
tables解锁;
| a实例:
mysql> unlock tables; 执行unlock |
6.在实例b上导入tablespace: ALTER TABLE y IMPORT
TABLESPACE;
| b实例:
mysql> ALTER TABLE y IMPORT mysql> select * from y; +------+------+ | name | age | +------+------+ | yy.y | | yy.y | | yy.y | +------+------+ 完成表空间迁移。 |
说明:迁移数据会对表加锁.完成迁移后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 5.6以及更高版本,import&export 版本必须在同一个series 在replication环境中,master & 对于InnoDB general tablespace,不支持discard & import 如果两边服务器的table row_format设置的不一样,会导致schema mismatch 加密过的InnoDB tablespace 必须要拷贝.cfp 文件 |
4.MyISAM表空间迁移
| 1. flush table with read lock
2. 直接复制数据文件和表结构文件 |
Innodb表空间迁移过程的更多相关文章
- Innodb 表空间传输迁移数据
在mysql5.5之前,mysql实例中innodb引擎表的迁移是个头疼的问题,要么使用mysqldump导出,要么使用物理备份的方法,但是在mysql5.6之后的版本中,可以使用一个新特性,方便地迁 ...
- MySQL Innodb表空间不足的处理方法
官方给出的解决方案: 添加和删除 InnoDB 数据和日志文件 这一节描述在InnoDB表空间耗尽空间之时,或者你想要改变日志文件大小之时,你可以做的一些事情. 最简单的,增加InnoDB表空间大小的 ...
- 10. InnoDB表空间加密
10. InnoDB表空间加密 InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密. 详细信息见官方文档
- ibd2sdi — InnoDB表空间SDI提取实用程序
参考mysql8.0官方文档 https://dev.mysql.com/doc/refman/8.0/en/ibd2sdi.html ibd2sdi是一个实用程序,用于从表空间文件中提取 序列化的字 ...
- MySQL InnoDB表空间加密
从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...
- Innodb 表空间卸载、迁移、装载
从MySQL的Innodb特性中我们知道,Inndob的表空间有共享和独享的特点,如果是共享的.则默认会把表空间存放在一个文件中(ibdata1),当开启独享表空间参数Innodb_file_per_ ...
- InnoDB表空间、段、区
1. 表空间是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中.默认,InnoDB存储引擎只有一个表空间ibdata1,即所有数据都存放在这个表空间内.如果用户启用了参数innodb_ ...
- Innodb表空间
Innodb有两种管理表空间的方法 独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件.其中ibd文件包括了单独一个表的数据内容和索引内容. 共享 ...
- 019:InnoDB 表空间内部组织结构
一. 表空间内部组织结构 表空间 内部有多个段对象(Segment) 组成 每个段(Segment)由区(Extent) 组成 每个区(Extent)由页(Page)组成 每个页里面报存数据 (或者叫 ...
随机推荐
- 从Linux源码看Socket(TCP)的bind
从Linux源码看Socket(TCP)的bind 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 今天笔者就来从Linux源码的角度看下Server ...
- MySQL数据库基础-2范式
数据库结构设计 范式 设计数据库的规范 第12345范式,凡是之间有依赖关系. 关系模型的发明者埃德加·科德最早提出这一概念,并于1970 年代初定义了第一范式.第二范式和第三范式的概念 设计关系数据 ...
- Java8新特性--Base64转换
1.简介 在Java8中,Base64编码已经成为Java类库的标准.Java 8 内置了 Base64 编码的编码器和解码器. Base64工具类提供了一套静态方法获取下面三种BASE64编解码器: ...
- LIS初级推算(最长上升子序列问题)
所谓LIS,就是Longest Increasing Subsequence问题 注意,子序列不一定是连续的,举个例子:对于序列10,9,2,3,5,4,7,9,101,18,其中的LIS就是2,3, ...
- pwn之栈缓冲区溢出漏洞(入门)
题目ret2text 题目信息确认 使用file命令查看文件类型 root@CTF:/home/# file ret2text ret2text: ELF 32-bit LSB executable, ...
- 数位dp(贴一个模板=。=)
emmmm,之前看到大佬的博客感觉这个模板挺有用的,就贴了一个= = 然后解释什么的都有了就...... 数位dp一般应用于: 求出在给定区间[A,B]内,符合条件P(i)的数i的个数. 条件P(i) ...
- 论文解读《Deep Resdual Learning for Image Recognition》
总的来说这篇论文提出了ResNet架构,让训练非常深的神经网络(NN)成为了可能. 什么是残差? "残差在数理统计中是指实际观察值与估计值(拟合值)之间的差."如果回归模型正确的话 ...
- JUC---06线程间通信(二)
二.线程间定制化调用通信 要使多线程之间按顺序调用,实现A->B->C按顺序输出,使用Lock锁实现,通过Lock锁创建三个Condition实例(三把钥匙),通过不同的条件,调用不同钥匙 ...
- python数据类型之Number(数字)
一.Number(数字) 关注公众号"轻松学编程"了解更多. 数据类型 为什么会有不同的数据类型? 计算机是用来做数学计算的机器,因此它可以处理各种数值,但是计算机能够处理 ...
- numpy数组
一.数组创建 基础数组 1.array() array函数可以创建一维或多维数 一维数组 1.arange(起始值,终值,步长) 2.linspace(起始值,终值,元素个数) --创建等步长的数组 ...