云数据库 MySQL Instant drop 后 Instant add column 同名列引发 crash

执行 Instant drop 后执行 Instant add 同名列引发 crash。

相关产品
云数据库 MySQL 产品页,含版本规格、价格与购买入口。

一、问题触发场景

执行 Instant drop 后实际列并没有删除,而是重命名为一个隐藏列,如果再执行 Instant add column 添加一个和隐藏列同名的列,会导致元数据错乱,引发 crash。

二、涉及问题的内核版本

MySQL 8.0 20221221及以前的版本。

三、修复的内核版本

MySQL 8.0 20241005。

四、检查方法

可参考如下命令筛查具有隐患的表。

select replace(name, '/', '.') as 'table_schema.table_name' from information_schema.innodb_tables where TOTAL_ROW_VERSIONS!=0 or INSTANT_COLS!=0;

五、修复方法

1. 将内核版本升级至 MySQL 8.0 20241005,操作方法请参考 升级内核小版本。

2. 升级内核版本后,对已损坏的表进行重建修复,可以通过 alter table xx engine = innodb; 的方法进行修复。为了避免锁表导致的业务影响,建议通过 pt-osc 等工具在业务低峰期进行修复。

赞 (0)
上一篇 4天前
下一篇 4天前