mysql表空间传输

在MySQL 5.6 版本中引入了一个可移动表空间的新特性(复制的表空间到另一个服务器), mysql表空间传输。这使得我们传输表或者单个库的数据变得十分方便。

    但是,传输表空间必须满足以下的条件
1.必须使用独立表空间
2.两个mysql数据库的page大小必须一样
3.两个表的表结构必须一样

下面我们对lala库下面的score表进行传输
首先,先从主库导出score
我们可以在导出之前对错误日志-f命令进行输出,跟踪它做了什么
[root@potato data]# tail -f error.log
root@localhost:mysql.sock  01:31:46 [lala]>flush tables score for export;
root@localhost:mysql.sock  02:08:21 [lala]>select * from score;                 +------+----------+-------+
| id   | name     | score |
+------+----------+-------+
|    3 | xiaohong |    99 |
|    2 | xiaoming |    65 |
|    1 | xiaojun  |    55 |
+------+----------+-------+
3 rows in set (0.00 sec)
以下是错误日志的输出
2016-12-19 01:32:44 25547 [Note] InnoDB: Sync to disk of '"lala"."score"' started.
2016-12-19 01:32:44 25547 [Note] InnoDB: Stopping purge
2016-12-19 01:32:44 25547 [Note] InnoDB: Writing table metadata to './lala/score.cfg'
2016-12-19 01:32:44 25547 [Note] InnoDB: Table '"lala"."score"' flushed to disk
可见,它首先对表停止操作,再把score的数据和元数据写到磁盘。
此时可以访问这张表,但是不能对数据进行DML操作,如
发起查询语句,成功
root@localhost:mysql.sock  01:33:11 [(none)]>select * from lala.score;          +------+----------+-------+
| id   | name     | score |
+------+----------+-------+
|    3 | xiaohong |    99 |
|    2 | xiaoming |    65 |
|    1 | xiaojun  |    55 |
+------+----------+-------+
3 rows in set (0.00 sec)
发起插入语句,一直在等待
root@localhost:mysql.sock  01:31:23 [(none)]>insert into lala.score values(4,'xiaolin',74);

在库文件夹下面多了cfg文件
[root@potato lala]# ls -l score*
-rw-r-----. 1 mysql mysql   470 Dec 19 02:07 score.cfg
-rw-rw----. 1 mysql mysql  8618 Dec 19 02:03 score.frm
-rw-r-----. 1 mysql mysql 98304 Dec 19 02:07 score.ibd
我们把cfg和ibd文件先复制到/tmp目录下
[root@potato lala]#cp score.cfg /tmp
[root@potato lala]#cp score.ibd /tmp
然后解锁表,让外部可以尽快访问表
root@localhost:mysql.sock  01:35:02 [lala]>unlock tables;
Query OK, 0 rows affected (0.00 sec)

备库此时没有该表
root@localhost:mysql.sock  01:35:28 [lala]>show tables;
+----------------+
| Tables_in_lala |
+----------------+
| haha           |
| test           |
| test1          |
+----------------+
3 rows in set (0.00 sec)

查看主库的score建表语句
root@localhost:mysql.sock  01:37:19 [lala]>show create table score\G
*************************** 1. row ***************************
Table: score
Create Table: CREATE TABLE `score` (
`id` int(11) DEFAULT NULL,
`name` varchar(15) DEFAULT NULL,
`score` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

在从库上执行
root@localhost:mysql.sock  02:03:44 [lala]> CREATE TABLE `score` (
->   `id` int(11) DEFAULT NULL,
->   `name` varchar(15) DEFAULT NULL,
->   `score` int(11) DEFAULT NULL
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)
现在score表是没有数据的
root@localhost:mysql.sock  02:04:11 [lala]>select * from score;
Empty set (0.00 sec)
卸载score表空间
root@localhost:mysql.sock  02:05:12 [lala]>alter table score discard tablespace;
Query OK, 0 rows affected (0.02 sec)
[root@potato lala]# ls -l score*
-rw-rw----. 1 mysql mysql 8618 Dec 19 02:03 score.frm
在主库上把两个文件传到备库上
[root@potato lala]# scp /tmp/score* 192.168.161.55:/data/mysql/mytest_3306/data/lala
root@192.168.161.55's password:
score.cfg                                     100%  470     0.5KB/s   00:00   
score.ibd                                     100%   96KB  96.0KB/s   00:00
修改传输过去的文件属主
[root@potato lala]# ls -l score*
-rw-r-----. 1 root root  8618 Dec 19 01:37 score.cfg
-rw-rw----. 1 mysql mysql  8618 Dec 19 02:03 score.frm
-rw-r-----. 1 root root 98304 Dec 19 01:37 score.ibd
[root@potato lala]# chown mysql:mysql score*
[root@potato lala]# ls -l score*
-rw-r-----. 1 mysql mysql   470 Dec 19 02:07 score.cfg
-rw-rw----. 1 mysql mysql  8618 Dec 19 02:03 score.frm
-rw-r-----. 1 mysql mysql 98304 Dec 19 02:07 score.ibd
导入score表空间
root@localhost:mysql.sock  02:05:29 [lala]>alter table score import tablespace; Query OK, 0 rows affected (0.36 sec)

root@localhost:mysql.sock  02:08:21 [lala]>select * from score;                 +------+----------+-------+
| id   | name     | score |
+------+----------+-------+
|    3 | xiaohong |    99 |
|    2 | xiaoming |    65 |
|    1 | xiaojun  |    55 |
+------+----------+-------+
3 rows in set (0.00 sec)
     至此,表空间传输成功

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31386161/viewspace-2130958/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31386161/viewspace-2130958/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值