💡
原文英文,约1300词,阅读约需5分钟。
📝
内容提要
在MySQL的InnoDB表中,使用ALTER TABLE和OPTIMIZE TABLE可能导致重复键错误和数据丢失,受影响版本为8.0.27及之后版本。建议升级到Percona Server for MySQL 8.0.39-30或8.4.2-2以解决问题,使用ALTER TABLE ALGORITHM=COPY可避免此类问题。
🎯
关键要点
- 在InnoDB表中使用ALTER TABLE和OPTIMIZE TABLE可能导致重复键错误和数据丢失。
- 受影响的MySQL版本为8.0.27及之后版本。
- 建议升级到Percona Server for MySQL 8.0.39-30或8.4.2-2以解决问题。
- 使用ALTER TABLE ALGORITHM=COPY可以避免此类问题。
- 在2024年春季,客户发现InnoDB表中的一行意外缺失,调查显示没有删除操作。
- 问题源于在执行ALTER TABLE ALGORITHM=INPLACE时未停止复制,导致并发操作干扰。
- MySQL Server 8.0.27引入的新并行在线ALTER TABLE代码存在缺陷,可能导致行丢失。
- 在线ALTER TABLE INPLACE和OPTIMIZE TABLE可能在并发插入时意外失败,导致重复键错误。
- 行丢失问题在Percona Server for MySQL 8.0.39-30和8.4.2-2中已修复。
- Oracle MySQL团队尚未接受相关补丁或提出替代修复方案。
- 建议用户升级到修复版本,或使用ALTER TABLE .. ALGORITHM=COPY作为替代方案。
❓
延伸问答
在MySQL中使用ALTER TABLE和OPTIMIZE TABLE会导致什么问题?
可能导致重复键错误和数据丢失。
哪些MySQL版本受到ALTER TABLE和OPTIMIZE TABLE问题的影响?
受影响的版本为8.0.27及之后的所有8.0.x版本。
如何解决MySQL中ALTER TABLE和OPTIMIZE TABLE导致的问题?
建议升级到Percona Server for MySQL 8.0.39-30或8.4.2-2,或使用ALTER TABLE ALGORITHM=COPY。
ALTER TABLE ALGORITHM=COPY有什么优势?
可以避免在执行过程中出现数据丢失的问题。
为什么在执行ALTER TABLE时会出现行丢失?
因为在执行ALTER TABLE ALGORITHM=INPLACE时未停止复制,导致并发操作干扰。
Oracle MySQL团队对这些问题的态度是什么?
Oracle MySQL团队尚未接受相关补丁或提出替代修复方案。
🏷️
标签
➡️