暂无图片
如何把系统表空间迁移到自定义表空间?
我来答
分享
Awesome Database
2023-09-14
如何把系统表空间迁移到自定义表空间?

如何把系统表空间迁移到自定义表空间?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
大大刺猬

你不是要迁移到系统表空间么, 咋又要迁移出来了呢.
官网都有的, 你可以看下官网的DDL语法: https://dev.mysql.com/doc/refman/8.0/en/create-tablespace.html
参考命令

-- 创建表空间(未指定路径就是@@datadir下面)
create tablespace t1 add datafile 't1.ibd' engine=innodb;

-- 迁移表空间
alter table t1 tablespace t1;

效果图
image.png

(root@127.0.0.1) [db20232]> show create table t1;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                        |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) /*!50100 TABLESPACE `innodb_system` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

(root@127.0.0.1) [db20232]> create tablespace t1 add datafile 't1.ibd' engine=innodb;
Query OK, 0 rows affected (0.00 sec)

(root@127.0.0.1) [db20232]> alter table t1 tablespace t1;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

(root@127.0.0.1) [db20232]> show create table t1;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                             |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) /*!50100 TABLESPACE `t1` */ ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

(root@127.0.0.1) [db20232]> select @@datadir;
+-----------------------------+
| @@datadir                   |
+-----------------------------+
| /data/mysql_3308/mysqldata/ |
+-----------------------------+
1 row in set (0.00 sec)

(root@127.0.0.1) [db20232]> system ls -ahrlt /data/mysql_3308/mysqldata/t1.ibd
-rw-r----- 1 mysql mysql 96K Sep 14 09:13 /data/mysql_3308/mysqldata/t1.ibd
(root@127.0.0.1) [db20232]> 

如果要指定路径的话就是:

create tablespace tmpt1 add datafile '/tmp/t1.ibd' engine=innodb;
暂无图片 评论
暂无图片 有用 3
暂无图片
Awesome Database
题主
2023-09-14
混经验...
大大刺猬
答主
2023-09-14
啊, 这..... -_-
virvle
2023-09-14
好详细,用心了
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏