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;
效果图

(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
混经验...
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏


