Innodb 表空间传输迁移数据
在mysql5.5之前,mysql实例中innodb引擎表的迁移是个头疼的问题,要么使用mysqldump导出,要么使用物理备份的方法,但是在mysql5.6之后的版本中,可以使用一个新特性,方便地迁移Innodb表,这样一来大的innodb表的迁移就显得很easy,这个特性就是innodb表空间传输:
1.在迁出实例数据库:
mysql> use xiaoboluo;
mysql> select * from test1; #查询一下迁出实例表数据,这里是测试表,大表请不要这么干
+------------+-------+-------------+
| product_id | param | create_time |
+------------+-------+-------------+
| 1 | 1 | 1 |
| 10 | 10 | 10 |
| 11 | 1 | 1 |
| 12 | 100 | 101 |
| 13 | 101 | 101 |
| 14 | 100 | 101 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 6 |
| 7 | 7 | 7 |
| 8 | 8 | 8 |
| 9 | 9 | 9 |
+------------+-------+-------------+
14 rows in set (0.00 sec)
mysql> show create table test1; #查看表定义语句,复制出来
2.在迁入实例数据库:
mysql> create database xiaoboluo;
建表:
mysql> use xiaoboluo
mysql> CREATE TABLE `test1` (
`product_id` varchar(50) NOT NULL,
`param` int(11) DEFAULT NULL,
`create_time` int(11) DEFAULT NULL,
PRIMARY KEY (`product_id`),
KEY `i_create_time` (`create_time`),
KEY `i_product_create_time` (`product_id`,`create_time`),
KEY `i_param` (`param`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
查看表相关文件:
shell > ll /data/mysql3306/xiaoboluo/test1*
-rw-rw---- 1 mysql mysql 8648 1月 7 09:31 /data/mysql3306/xiaoboluo/test1.frm
-rw-rw---- 1 mysql mysql 147456 1月 7 09:33 /data/mysql3306/xiaoboluo/test1.ibd
mysql> alter table test1 discard tablespace; #注意再三确认这个命令有没有搞错对象,一执行就会把ibd文件给删掉
再次查看表相关文件,可以看到没有了表空间文件ibd:
shell > ll /data/mysql3306/xiaoboluo/test1*
-rw-rw---- 1 mysql mysql 8648 1月 7 09:37 /data/mysql3306/xiaoboluo/test1.frm
3.在迁出实例数据库:
mysql> use xiaoboluo;
mysql> flush tables test1 for export; #这个时候会加表锁,只能读不能写,同时也会产生一个tb_name.cfg文件
然后复制这个表的ibd和cfg文件到迁入实例的新建同名库目录下:
shell > scp /data/mysql3306/xiaoboluo/test1.{cfg,ibd} 192.168.0.37:/data/mysql3306/xiaoboluo
root@192.168.0.37's password:
test1.cfg 100% 801 0.8KB/s 00:00
test1.ibd 100% 144KB 144.0KB/s 00:00
mysql> unlock tables; #解锁迁出实例表
4.在迁入目标实例上:
mysql> use xiaoboluo;
shell > chown mysql.mysql /data/mysql3306/xiaoboluo/test1.{ibd,cfg}
查看文件权限:
shell > ll /data/mysql3306/xiaoboluo/test1*
-rw-r----- 1 mysql mysql 801 1月 7 09:40 /data/mysql3306/xiaoboluo/test1.cfg
-rw-rw---- 1 mysql mysql 8648 1月 7 09:37 /data/mysql3306/xiaoboluo/test1.frm
-rw-r----- 1 mysql mysql 147456 1月 7 09:41 /data/mysql3306/xiaoboluo/test1.ibd
mysql> Alter table test1 import tablespace; #导入表空间文件
mysql> select * from test1; #校验数据是否正常,这里是测试表,大表请用其他方法验证数据
+------------+-------+-------------+
| product_id | param | create_time |
+------------+-------+-------------+
| 1 | 1 | 1 |
| 10 | 10 | 10 |
| 11 | 1 | 1 |
| 12 | 100 | 101 |
| 13 | 101 | 101 |
| 14 | 100 | 101 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 5 | 5 |
| 6 | 6 | 6 |
| 7 | 7 | 7 |
| 8 | 8 | 8 |
| 9 | 9 | 9 |
+------------+-------+-------------+
14 rows in set (0.00 sec)
到这里整个innodb表就被迁移完成,是不是比以前的方法方便很多呢!!
Innodb 表空间传输迁移数据的更多相关文章
- EXPDP/IMPDP与EXP/IMP在不同用户和表空间之间迁移数据的实现方法
1. EXPDP/IMPDP方式 SQL> create user zlm identified by zlm; User created. SQL> grant connect,reso ...
- [20170623]利用传输表空间恢复部分数据.txt
[20170623]利用传输表空间恢复部分数据.txt --//昨天我测试使用传输表空间+dblink,上午补充测试发现表空间设置只读才能执行impdp导入原数据,这个也很好理解.--//这样的操作模 ...
- MySQL 表空间传输
聊到MySQL数据迁移的话题,表空间传输时一个很实用的方法. 在MySQL 5.6 Oracle引入了一个可移动表空间的特征(复制的表空间到另一个服务器)和Percona Server采用部分备份,这 ...
- Oracle表空间传输测试
源数据库平台:window 7 64bit Oracle 11g 64bit目标数据库平台:RHEL6 64bit Oracle 11g 64bit 1.查看数据集 select * from nls ...
- Oracle11gR2导入导出实战之表空间传输
Oracle11gR2导入导出实战之使用Datapump进行表空间传输 表空间检查 [oracle@localhost database]$ ps -ef|grep smon oracle 8981 ...
- MySQL Innodb表空间不足的处理方法
官方给出的解决方案: 添加和删除 InnoDB 数据和日志文件 这一节描述在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支持存储在单独表空间中的表的数据加密 .此功能为物理表空间数据文件提供静态加密.该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加 ...
- Oracle创建删除用户,角色,表空间,导入导出数据库命令总结(转载)
无意间看到一篇文章,觉得对于ORACLE的新手很实用,特转载,原文出处这里 说明:在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后 ...
随机推荐
- [lua]安卓ndk如何编译lua库
这里说的lua库是标准lua库,不包含tolua,不包含cocos2dx的各种lua扩展,是干净的lua. 参考: http://stackoverflow.com/questions/1229965 ...
- IO口
STM32的每个IO端口都有7个寄存器来控制.他们是:CRH CRL IDR ODR BSRR BRR LCKR.我们常用的IO端口寄存器位CRL CRH IDR ODR.CRL CRH控制着每个IO ...
- magento搬家
将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除.然后将所有文件制作成一个压缩包,以减少文件体积,方便转移. 将压缩包转移到新的服务器域名指向的文件夹, ...
- ES6 基础知识
let:用来定义变量特点:只能在代码块里面使用,let拥有块级作用域;并且let不允许重复声明; 比如: var a = 12; var a = 5; alert(a); //5; let a = 1 ...
- php 登录注册api接口代码
/** *一览(www.yl1001.com) * PHP开发API接口 服务端 */ require 'conn.php'; //连接数据库的文件 header('Content-Type:text ...
- ROW_NUMBER() OVER() 用法
语法 ROW_NUMBER ( ) OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause ) 参数 PARTITIO ...
- 以rem为单位根据移动设备的分辨率动态设置font-size
无需指定font-size的大小 <script> // //- 设置根元素fontSize~ // (function (doc, win) { // var _root = doc.d ...
- myisam、innodb存储引擎比较
MYSQL表类型(存储引擎) 1.概述 MySQL数据库其中一个特性是它的存储引擎是插件式的.用户可以根据应用需要选择存储引擎.Mysql默认支持多种存储引擎,以适用各种不同的应用需要.默认情况下,创 ...
- 搭建git for windows服务器(100%可以成功)
既然Git在Linux下面非常好用,为什么还要搭建git windows的服务器,因为不是所有的用户都需要在linux下面做开发,对吧,还有很多用户选择使用windows做开发. 看到很多网友尝试部分 ...
- js时间格式化
const formatDate = timestamp => { const date = new Date(timestamp); const m = date.getMonth() + 1 ...