Innodb表空间迁移

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 有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的校验,顺利加载。


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9月前
|
存储 关系型数据库 MySQL
第9章 【MySQL】InnoDB的表空间
第9章 【MySQL】InnoDB的表空间
52 0
第9章 【MySQL】InnoDB的表空间
|
8天前
|
存储 关系型数据库 MySQL
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
MySQL数据库——InnoDB引擎-逻辑存储结构(表空间、段、区、页、行)
22 7
|
30天前
|
存储 关系型数据库 MySQL
认真学习InnoDB的数据存储结构中的区、段与表空间
认真学习InnoDB的数据存储结构中的区、段与表空间
72 2
|
存储 关系型数据库 MySQL
一文带你了解MySQL之InnoDB表空间
通过前边的内容,相信大家都知道了表空间是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。 大家可以把表空间想象成被切分为许多个页的池子,当我们想为某个表插入一条记录的时候,就从池子中捞出一个对应的页来把数据写进去。 本章内容会深入到表空间的各个细节中,带领大家在InnoDB存储结构的池子中畅游。由于本章中将会涉及比较多的概念,虽然这些概念都不难,但是却相互依赖,所以奉劝大家看的时候:不要跳着看
179 0
|
存储 关系型数据库 MySQL
一文带你了解MySQL之InnoDB表空间
通过前边的内容,相信大家都知道了表空间是一个抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。 大家可以把表空间想象成被切分为许多个页的池子,当我们想为某个表插入一条记录的时候,就从池子中捞出一个对应的页来把数据写进去。 本章内容会深入到表空间的各个细节中,带领大家在InnoDB存储结构的池子中畅游。由于本章中将会涉及比较多的概念,虽然这些概念都不难,但是却相互依赖,所以奉劝大家看的时候:不要跳着看
152 0
|
存储 关系型数据库 MySQL
InnoDB 独立表空间与共享表空间
InnoDB 独立表空间与共享表空间
93 0
InnoDB 独立表空间与共享表空间
|
关系型数据库 MySQL
InnoDB系统表空间定义规则
1. InnoDB系统表空间定义规则 2. 并行复制设置不当可能导致主从数据不一致
|
存储 关系型数据库 MySQL
独立表空间&系统表空间总结---innoDB表空间(三十五)
独立表空间&系统表空间总结---innoDB表空间(三十五)
|
存储 关系型数据库 MySQL
整体结构&InnoDB数据字典(1) --系统表空间结构(三十三)
整体结构&InnoDB数据字典(1) --系统表空间结构(三十三)
|
1天前
|
存储 SQL 关系型数据库
【MySQL技术内幕】6.3-InnoDB中的锁
【MySQL技术内幕】6.3-InnoDB中的锁
136 57