美文网首页
InnoDB存储引擎--透明表空间传输

InnoDB存储引擎--透明表空间传输

作者: 胖熊猫l | 来源:发表于2017-02-07 11:21 被阅读0次

0. Summary

1. 目的服务器创建一张表,表结构和源服务器结构一样
2. 目的服务器discard tablespace
3. 源服务器锁表
4. 拷贝ibd和cfg文件到目的服务器
5. 目的服务器导入表空间文件
6. 其他

1. 目的服务器创建一张表,表结构和源服务器结构一样

#### 源 ####

(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
|   150000 |
+----------+
1 row in set (0.02 sec)

(root@localhost) [dbt3]> show create table t1\G
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `c_custkey` int(11) NOT NULL,
  `c_name` varchar(25) DEFAULT NULL,
  `c_address` varchar(40) DEFAULT NULL,
  `c_nationkey` int(11) DEFAULT NULL,
  `c_phone` char(15) DEFAULT NULL,
  `c_acctbal` double DEFAULT NULL,
  `c_mktsegment` char(10) DEFAULT NULL,
  `c_comment` varchar(117) DEFAULT NULL,
  PRIMARY KEY (`c_custkey`),
  KEY `i_c_nationkey` (`c_nationkey`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

#### 目 ####

(root@localhost) [mytest]> create database dbt3;
Query OK, 1 row affected (0.01 sec)

(root@localhost) [mytest]> use dbt3;
Database changed
(root@localhost) [dbt3]> CREATE TABLE `t1` (
    ->   `c_custkey` int(11) NOT NULL,
    ->   `c_name` varchar(25) DEFAULT NULL,
    ->   `c_address` varchar(40) DEFAULT NULL,
    ->   `c_nationkey` int(11) DEFAULT NULL,
    ->   `c_phone` char(15) DEFAULT NULL,
    ->   `c_acctbal` double DEFAULT NULL,
    ->   `c_mktsegment` char(10) DEFAULT NULL,
    ->   `c_comment` varchar(117) DEFAULT NULL,
    ->   PRIMARY KEY (`c_custkey`),
    ->   KEY `i_c_nationkey` (`c_nationkey`)
    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Query OK, 0 rows affected (0.02 sec)

2. 目的服务器discard tablespace

[root@test-2 dbt3]# ls
db.opt  t1.frm  t1.ibd

(root@localhost) [dbt3]> alter table t1 discard tablespace;
Query OK, 0 rows affected (0.03 sec)

[root@test-2 dbt3]# ls
db.opt  t1.frm

执行discared tablespace的作用是删除了ibd文件,只保留了表结构定义文件。

3. 源服务器锁表

(root@localhost) [dbt3]> flush tables t1 for export;
Query OK, 0 rows affected (0.01 sec)

另一个session执行:

(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
|   150000 |
+----------+
1 row in set (0.03 sec)

锁住的意思是加共享的锁。

(root@localhost) [dbt3]> delete from t1 limit 1;
...hang...

4. 拷贝ibd和cfg文件到目的服务器

拷贝文件先到别的地方,尽快的释放读锁

[root@test-1 dbt3]# cp t1.cfg t1.ibd /mdata/

(root@localhost) [dbt3]> unlock tables;
Query OK, 0 rows affected (0.00 sec)

释放掉之后delete返回结果

(root@localhost) [dbt3]> delete from t1 limit 1;
Query OK, 1 row affected (2 min 43.80 sec)

接下来拷贝cfg和ibd到目的服务器的数据目录下。

[root@test-2 dbt3]# ls -ltr
total 40980
-rw-r-----. 1 mysql mysql       67 Feb  7 09:42 db.opt
-rw-r-----. 1 mysql mysql     8850 Feb  7 09:44 t1.frm
-rw-r--r--. 1 root  root  41943040 Feb  7 10:47 t1.ibd
-rw-r--r--. 1 root  root       893 Feb  7 10:47 t1.cfg
[root@test-2 dbt3]# chown -R mysql:mysql t1.ibd t1.cfg

cfg是校验文件,其实没有也是可以的,不对元数据进行校验。如果frm和ibd不一致的话,运行的时候就会crash.

5. 目的服务器导入表空间文件

(root@localhost) [dbt3]> alter table t1 import tablespace;
Query OK, 0 rows affected (0.18 sec)

(root@localhost) [dbt3]> select count(*) from t1;
+----------+
| count(*) |
+----------+
|   150000 |
+----------+
1 row in set (0.59 sec)

6. 其他

该特性在5.6引入,5.7支持分区表的更细粒度。

相关文章

  • InnoDB存储引擎--透明表空间传输

    0. Summary 1. 目的服务器创建一张表,表结构和源服务器结构一样 #### 源 #### #### 目 ...

  • Mysql之InnoDB存储结构

    InnoDB存储结构 Innodb逻辑存储单元为为表空间,段,区,页 InnoDB表空间 InnoDB存储引擎表中...

  • 存储引擎

    存储引擎 1.查询支持的存储引擎 例如 innodb myisam 区别 2.物理存储结构 共享表空间 独立表空间...

  • MySQL(Mariadb)总结5 - MySQL(MariaD

    MySQL存储引擎 表类型: InnoDB: 处理大量的短期事务; 数据存储于"表空间(table space)"...

  • 必须掌握的mysql常用面试知识点一览

    数据表引擎 innodb 引擎 默认事务型引擎,最重要最广泛的存储引擎,性能非常优秀 数据存储在共享表空间,可通过...

  • MySQL常用存储引擎之Innodb

    MySQL默认引擎Innodb Innodb使用表空间进行数据存储 控制参数:innidb_file_per_ta...

  • MySql表引擎

    1、innoDB表引擎 默认的事务型引擎,最重要最广泛的存储引擎,性能非常优秀数据存储在共享表空间,可以通过配置分...

  • 数据库存储引擎

    1、InnoDB表引擎默认事务型引擎,最重要最广泛的存储引擎,性能优秀数据存储在共享表空间,可以通过配置分开对主键...

  • InnoDB 逻辑存储结构

    InnoDB的数据大部分都是保存在表空间中,包括索引,数据和插入缓存 逻辑结构 InnoDB存储引擎的逻辑存储结构...

  • SQL 规范

    基础规范 表存储引擎必须使用InnoDB MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)...

网友评论

      本文标题:InnoDB存储引擎--透明表空间传输

      本文链接:https://www.haomeiwen.com/subject/nsbpittx.html