这个星球真有人在一个数据库里放10000张表(MySQL 8.4.2发布)
前些日子有个万年一遇的重大缺陷在社区里引发讨论,这直接导致 Oracle 例外发布了 MySQL 新版本,并下架了有缺陷的版本。
7月23日,MySQL 8.0.39 / 8.4.2 LTS / 9.0.2 Innovation 版本发布,该版本修复了3个Bug。
- InnoDB:在某些情况下,创建大量表(8001 个或更多)后,服务器无法成功重新启动。(Bug #36808732)
- InnoDB:改进了启动时的表空间文件扫描性能。(Bug #110402、Bug #35200385)
- 组复制:在来自异步通道到组复制的源上运行
CREATE TABLE ... SELECT
语句会导致副本出现错误。(错误 #36784284)
受影响的三个版本 MySQL 8.0.38 / 8.4.1 / 9.0.0 已下架,不再提供安装包下载。
并在对应版本的发版说明中增加了如下提示:
此版本不再可供下载。由于存在严重问题,该问题可能导致服务器在创建大量表(8001 个或更多)后无法重新启动,因此已将其删除。请升级到 MySQL 8.0.39。
下面使用 MySQL 8.4.2 演示第一个Bug,验证新版本。
启动 MySQL 8.4.2 容器镜像。
podman run --name mysql-8.4.2 -p 3842:3306 \
-e MYSQL_ROOT_HOST='%' -e MYSQL_ROOT_PASSWORD='1' \
-d mysql:8.4.2 --log-error-verbosity=3