原作者:彭冲
- 适用范围
- 问题概述
- 问题原因
- 解决方案
适用范围
MTK 2.9.2及以下版本
问题概述
使用MTK迁移MySQL分区表到MogDB时,遇到如下报错:
MySQL-2008: MySQL Not Support SubPart Type KEY.
MySQL分区表结构如下:
CREATE TABLE t1 (
a varchar(30) NOT NULL,
b varchar(11) NOT NULL,
c datetime NOT NULL,
d varchar(100) DEFAULT NULL,
UNIQUE KEY t_uq_idx (a,d,c,b),
INDEX t_b_idx (b)
)
PARTITION BY RANGE (to_days(c))
SUBPARTITION BY KEY (b)
SUBPARTITIONS 9
(
PARTITION p20230624 VALUES LESS THAN (739060),
PARTITION p20230625 VALUES LESS THAN (739061),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
问题原因
分析报错信息以及测试定位发现MySQL建表语句复合分区语法SUBPARTITION BY KEY暂不支持迁移,而简单的PARTITION BY KEY是可以迁移的。
下面的t2表MTK是可以正常迁移key分区的
CREATE TABLE t2 (
s1 char(32) PRIMARY KEY
)
PARTITION BY KEY(s1)
PARTITIONS 10;
但上面的t1表,key分区如果与其他分区(例如range分区)组合使用进行复合分区时就会出现上面的报错。
解决方案
期待MTK下一个版本解决该问题,另外如果源端key分区可以转换为hash分区,MTK是支持复合分区使用hash分区,不过必须有一列或多列包含整数值。