导读
本来准备做二级分区的DDL的, 但是看了下, 太复杂了. 而且分区表用得也不多. 还不如更新支持 mysql5.7
CREATE TABLE ts (id INT, purchased DATE)
PARTITION BY RANGE( YEAR(purchased) )
SUBPARTITION BY HASH( TO_DAYS(purchased) ) (
PARTITION p0 VALUES LESS THAN (1990) (
SUBPARTITION s0,
SUBPARTITION s1
),
PARTITION p1 VALUES LESS THAN (2000) (
SUBPARTITION s2,
SUBPARTITION s3
),
PARTITION p2 VALUES LESS THAN MAXVALUE (
SUBPARTITION s4,
SUBPARTITION s5
)
);
下载
项目地址: https://github.com/ddcw/ibd2sql
ibd2sql v1.3下载地址: https://github.com/ddcw/ibd2sql/archive/refs/tags/v1.3.tar.gz
使用ibd2sql解析 mysql 5.7的ibd文件
由于mysql 5.7的ibd文件 没得sdi之类的元数据信息, 所以得先解析 frm文件以获取元数据信息, 之前其实有解析过. 但我不想动代码了, 那就沿用8.0的sdi吧, 也就是得先使用 mysqlfrm
提取出DDL 放到8.0环境, 以获取SDI信息. 复杂点就复杂点吧 -_-
提取mysql5.7的DDL
mysqlfrm是mysql-utilities工具集里面的. 下载地址: https://downloads.mysql.com/archives/get/p/30/file/mysql-utilities-1.6.5.tar.gz
mysqlfrm /data/mysql_3308/mysqldata/db1/ddcw_alltype_table.frm --diagnostic
使用mysql8获取sdi信息
然后把ddl语句插入到mysql8.0的环境里面
使用ibd2sql解析mysql5.7的数据
使用 --mysql5
来表示这是mysql 5.7的ibd文件
python3 main.py /data/mysql_3308/mysqldata/db1/ddcw_alltype_table.ibd --sdi-table /data/mysql_3314/mysqldata/db1/ddcw_alltype_table.ibd --sql --mysql5
总结
至此, ibd2sql又更佳完善了(就是shit越堆越大-_-).