Innodb表空间迁移

简介: 有cfg文件时表空间迁移在源表上显示建表语句:

有cfg文件时表空间迁移

在源表上显示建表语句:

mysql> use test
mysql> show create table t1;
+-------+---------------------------------------------------------------------------------------+
| Table | Create Table                                                                          |
+-------+---------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `a` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+---------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


在目标表上创建一样的表:


mysql> CREATE TABLE `t1` (
    ->   `a` int(11) DEFAULT NULL
    -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ;
Query OK, 0 rows affected (0.07 sec)


在目标表上放弃此表对应的数据文件


mysql> alter table t1 discard tablespace;
Query OK, 0 rows affected (0.03 sec)
mysql> system ls -l /var/lib/mysql/test/t1.*
-rw-r----- 1 mysql mysql 8554 Jan 10 02:06 /var/lib/mysql/test/t1.frm
mysql>


在源表上输出表,注意加了一个读锁,产生了一个cfg结尾的文件。


mysql> flush tables t1 for export;
Query OK, 0 rows affected (0.04 sec)
mysql> select * from t1;
+------+
| a    |
+------+
|    1 |
+------+
mysql> update t1 set a=1;
ERROR 1099 (HY000): Table 't1' was locked with a READ lock and can't be updated
mysql> 
1 row in set (0.02 sec)
root@scutech:/var/lib/mysql/test# ls -l /var/lib/mysql/test/t1.*
-rw-r----- 1 mysql mysql   356 Jan 10 13:41 /var/lib/mysql/test/t1.cfg
-rw-r----- 1 mysql mysql  8554 Jan  2 18:32 /var/lib/mysql/test/t1.frm
-rw-r----- 1 mysql mysql 98304 Jan  2 18:32 /var/lib/mysql/test/t1.ibd


把文件拷贝过去:

root@scutech:/var/lib/mysql/test# scp t1.{cfg,ibd} scutech@192.168.??.???:/var/lib/mysql/test/
scutech@192.168.??.???'s password: 
t1.cfg                                                                                                                                                                    100%  356   212.9KB/s   00:00    
t1.ibd                                                                                                                                                                    100%   96KB  15.6MB/s   00:00    
root@scutech:/var/lib/mysql/test#


在源上解锁表:


mysql> unlock tables;
Query OK, 0 rows affected (0.01 sec)


在目标上库导入:


mysql> select * from t1;
ERROR 1814 (HY000): Tablespace has been discarded for table 't1'
mysql> alter table t1 import tablespace;
Query OK, 0 rows affected (0.03 sec)
mysql> select * from t1;
+------+
| a    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)
mysql>


无cfg文件时表空间迁移

如果源数据库以及crash了,不可能导出cfg文件,我们怎么进行迁移呢?我们可以试一下没有cfg文件的加载,其它步骤一样:



mysql> \! chown mysql. /var/lib/mysql/test/a.ibd
mysql> alter table a import tablespace;
Query OK, 0 rows affected, 1 warning (0.07 sec)
mysql> show warnings;
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------+
| Level   | Code | Message                                                                                                                                |
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1810 | InnoDB: IO Read error: (2, No such file or directory) Error opening './test/a.cfg', will attempt to import without schema verification |
+---------+------+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql>

我们看到提示只是没有进行schema的校验,顺利加载。


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 MySQL
第9章 【MySQL】InnoDB的表空间
第9章 【MySQL】InnoDB的表空间
337 0
第9章 【MySQL】InnoDB的表空间
|
存储 关系型数据库 MySQL
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
745 7
|
存储 关系型数据库 MySQL
认真学习InnoDB的数据存储结构中的区、段与表空间
认真学习InnoDB的数据存储结构中的区、段与表空间
699 2
|
存储 关系型数据库 MySQL
InnoDB 独立表空间与共享表空间
InnoDB 独立表空间与共享表空间
305 0
InnoDB 独立表空间与共享表空间
|
存储 关系型数据库 MySQL
一文带你了解MySQL之InnoDB表空间
通过前边的内容,相信大家都知道了表空间是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。 大家可以把表空间想象成被切分为许多个页的池子,当我们想为某个表插入一条记录的时候,就从池子中捞出一个对应的页来把数据写进去。 本章内容会深入到表空间的各个细节中,带领大家在InnoDB存储结构的池子中畅游。由于本章中将会涉及比较多的概念,虽然这些概念都不难,但是却相互依赖,所以奉劝大家看的时候:不要跳着看
713 0
|
存储 关系型数据库 MySQL
一文带你了解MySQL之InnoDB表空间
通过前边的内容,相信大家都知道了表空间是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。 大家可以把表空间想象成被切分为许多个页的池子,当我们想为某个表插入一条记录的时候,就从池子中捞出一个对应的页来把数据写进去。 本章内容会深入到表空间的各个细节中,带领大家在InnoDB存储结构的池子中畅游。由于本章中将会涉及比较多的概念,虽然这些概念都不难,但是却相互依赖,所以奉劝大家看的时候:不要跳着看
688 0
|
关系型数据库 MySQL
InnoDB系统表空间定义规则
1. InnoDB系统表空间定义规则 2. 并行复制设置不当可能导致主从数据不一致
309 0
|
存储 关系型数据库 MySQL
独立表空间&系统表空间总结---innoDB表空间(三十五)
独立表空间&系统表空间总结---innoDB表空间(三十五)
|
存储 网络协议 关系型数据库
MySQL8.4创建keyring给InnoDB表进行静态数据加密
MySQL8.4创建keyring给InnoDB表进行静态数据加密
594 1