本月初 MySQL 官方发布了第三季度的新版本,分别是MySQL 9.0 新的创新版本,以及 LTS 长周期版本 8.4.1 和 MySQL 8 系列的 MySQL8.0.38 版本。但是这个季度的这三个版本均存在一个致命的 Bug #36808732。
7 月 11 日开源数据库软件服务商 percona 发布重要警告,最新的 MySQL 版本存在重大Bug:
Do Not Upgrade to Any Version of MySQL After 8.0.37
上面是 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 紧急去掉下载链接一样。
如下图,MySQL 9.0.0 和 MySQL 8.4.1 和 MySQL 8.0.38 版本已经无法从历史归档中下载了。
然后 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)
当然,其他文档也是一如既往的匮乏,暂时没有放出来,只有这一个 Release Notes,那就先这样吧,静观其变,静待花开吧。
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————