ITPUB

号外!号外!MySQL 因重大 Bug 紧急发布新版本

本月初 MySQL 官方发布了第三季度的新版本,分别是MySQL 9.0 新的创新版本,以及 LTS 长周期版本 8.4.1 和 MySQL 8 系列的 MySQL8.0.38 版本。但是这个季度的这三个版本均存在一个致命的 Bug #36808732。
7 月 11 日开源数据库软件服务商 percona 发布重要警告,最新的 MySQL 版本存在重大Bug:

Image

上面是 percona 官网的一篇文章截图(原文:https://www.percona.com/blog/do-not-upgrade-to-any-version-of-mysql-after-8-0-37/)。简而言之,如果您创建了大量的表,比如 10000 个,MySQL 守护进程就会在重启时崩溃,该 Bug 在

MySQL 8.0.38

MySQL 8.4.1

MySQL 9.0.0

三个版本中被确认,这个问题在 >= 8.0.38 版本中存在,包括 8.4.1 和 9.0.0。

很多网友和大佬们出于好奇也进行了测试,当创建的表达到 10000 后重启实例,就能看到实例启动失败,实在是大跌眼镜。当然也有大佬给出了解决方案,使用共享/通用表空间,但是也不推荐。

-- 1. 使用共享表空间方案> SET GLOBAL innodb_file_per_table = 0;> CREATE TABLE test ...;
-- 2. 使用通用表空间方案> CREATE TABLESPACE test ADD DATAFILE 'test.ibd';> CREATE TABLE t_test1(...) TABLESPACE=test;

实际上,这是 MySQL 新版本的 bug,当创建表超过 8k(8000)以后就会遇到这个问题,既然确认是 Bug 了,那么 MySQL 也在今天做出了回应,紧急下架了这三个版本,于是在 7 月 23 日重新发布了三个最新版本

MySQL 9.0.1
MySQL 8.4.2

MySQL 8.0.39

7 月 1 日发布的三个存在 Bug 的版本已经无法下载到了,这和以前 MySQL 8.0.29 一样出现致命 Bug 紧急去掉下载链接一样。

Image

如下图,MySQL 9.0.0 和 MySQL 8.4.1 和 MySQL 8.0.38 版本已经无法从历史归档中下载了。

Image

然后 MySQL 官网也更新了这三个新版本的 Release Notes,但是内容更少,只有短短的三行内容,修复了 InnoDB 超过 8000 个表 不能重启的问题和 Group Replication CTAS 的 bug 问题。

9.0.1 Release Notes
InnoDB:在某些情况下,创建大量表(8001 或更多)后,服务器无法成功重启。(错误编号 36808732)
参考文献:此问题是对 Bug #33398681.
InnoDB:提高了启动时表空间文件扫描的性能。(错误 #110402,错误 #35200385)
组复制: 运行 CREATE TABLE ... SELECT 语句会导致副本出错。(错误编号 36784284)

Image

当然,其他文档也是一如既往的匮乏,暂时没有放出来,只有这一个 Release Notes,那就先这样吧,静观其变,静待花开吧。

【DTCC2024最新大会议题】
👇👇👇
Image