数据表的独立表空间数据迁移实战
独立表空间 相关概念:连接
案例01:利用独立表空间进行快速数据迁移(源端 3306/test/t100w --> 目标端 3307/test/t100w)
说明:可以在需要某个表中的数据信息时,可以将数据表的独立表空间数据信息做迁移,在另一个数据库中进行恢复即可
操作步骤一:锁定源端t100w表
mysql > lock tables baimei.t100w write;
-- 给t100w表加写数据锁
mysql > show create table baimei.t100w;
CREATE TABLE `t100w` (
`id` int DEFAULT NULL,
`num` int DEFAULT NULL,
`k1` char(2) DEFAULT NULL,
`k2` char(4) DEFAULT NULL,
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `idx` (`k1`,`k2`,`num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
-- 获取创建表结构数据信息
操作步骤二:目标端创建baimei库和t100w空表
mysql> create database baimei;
-- 创建新的数据库
mysql > CREATE TABLE `t100w` (
`id` int DEFAULT NULL,
`num` int DEFAULT NULL,
`k1` char(2) DEFAULT NULL,
`k2` char(4) DEFAULT NULL,
`dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
KEY `idx` (`k1`,`k2`,`num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
-- 创建新的数据表
操作步骤三:单独删除空的表空间文件
mysql> alter table baimei.t100w discard tablespace;
-- 删除t100w表的ibd数据文件信息,但是保留t100w的frm,ibdata1中关于t100w的系统数据
操作步骤四:拷贝源端ibd文件到目标端目录,并设置权限
[root@xiaoQ-01 ~]# cp /data/3306/data/baimei/t100w.ibd /data/3307/data/baimei/
[root@xiaoQ-01 ~]# chown -R mysql.mysql /data/*
操作步骤五:导入表空间
mysql> alter table baimei.t100w import tablespace;
-- 在目标端加载识别迁移过来的数据文件信息
mysql> select count(*) from t100w;
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
1 row in set (0.04 sec)
-- 查看数据表中是否有迁移古来的数据信息
操作步骤六:解锁源端数据表
欢迎来撩 : 汇总all