问题
使用 Instant add column 添加超过第1024个列后 crash。
问题触发场景
MySQL 8.0 20221221及以前的版本,即使在行大小超过页面一半时也允许执行 Instant add column,在进行内核版本升级后,rollback 发生时可能导致行大小超出限制,导致 rollback 失败。
涉及问题的内核版本
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 等工具在业务低峰期进行修复。