文档中心>云数据库 MySQL>自研内核>内核问题检查与修复>Instant change column redo 缓冲区计算缺陷引发 crash

Instant change column redo 缓冲区计算缺陷引发 crash

最近更新时间:2025-12-04 12:09:22

我的收藏

问题

Instant change column redo 缓冲区计算缺陷引发 crash。

问题触发场景

日志索引大小的计算需要考虑列顺序的变化,也需要在 redo 日志中记录索引信息的大小,原来这些列没有被计入。在执行 ALTER TABLE 修改列顺序后,紧接着执行 UPDATE 操作时,由于 redo 日志空间计算错误导致的崩溃。

涉及问题的内核版本

MySQL 8.0 20230704及以前的版本。

修复的内核版本

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 等工具在业务低峰期进行修复。