前些日子有个万年一遇的重大缺陷在社区里引发讨论,这直接导致 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
执行测试脚本,生成10000张表。
[shawnyan@ol9 ~]$ ./gen_10000_tables.sh
Checking MySQL connection...
Creating database if it doesn't exist...
Completed creating 10000 tables out of 10000.
确认表的数量。
(root@127.0.0.1) [(none)] 10:18:05> SELECT COUNT(*)
-> FROM information_schema.tables
-> WHERE table_schema = 'test';
+----------+
| COUNT(*) |
+----------+
| 10000 |
+----------+
1 row in set (0.02 sec)
重启容器,并查看日志。
podman stop mysql-8.4.2
podman start mysql-8.4.2
podman logs mysql-8.4.2
可以看到,该版本在创建10000张表之后,可以正常重启动。
2024-07-24T01:48:31.065241Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-07-24T01:48:31.357450Z 0 [Note] [MY-013932] [Server] BuildID[sha1]=a6fd834122e5831891bf73c08fa3b15d60cc914a
2024-07-24T01:48:31.357473Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.2) starting as process 1
2024-07-24T01:48:31.366601Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-07-24T01:48:31.431698Z 1 [Note] [MY-012207] [InnoDB] Using 2 threads to scan 10002 tablespace files
2024-07-24T01:48:33.498219Z 1 [Note] [MY-012208] [InnoDB] Completed space ID check of 10004 files.
2024-07-24T01:48:34.445816Z 1 [Note] [MY-012976] [InnoDB] 8.4.2 started; log sequence number 188559023
2024-07-24T01:48:34.446808Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-07-24T01:48:34.470979Z 1 [Note] [MY-011089] [Server] Data dictionary restarting version '80300'.
2024-07-24T01:48:34.623204Z 1 [Note] [MY-012357] [InnoDB] Reading DD tablespace files
2024-07-24T01:48:35.405717Z 1 [Note] [MY-012356] [InnoDB] Scanned 10006 tablespaces. Validated 10006.
2024-07-24T01:48:35.427433Z 1 [Note] [MY-010006] [Server] Using data dictionary with version '80300'.
2024-07-24T01:48:35.678606Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2024-07-24T01:48:35.678665Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.4.2' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
那么,
你会在MySQL中创建这么多表么?又是什么业务场景呢?欢迎留言讨论。
🌻 往期精彩 ▼
- [Oracle]
- Oracle 数据库全面升级为 23ai
- python-oracledb 已率先支持 Oracle 23ai
- 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
- [MySQL]
- MySQL 9.0 的 VECTOR 文档更新
- MySQL 9.0.0 新鲜出炉!支持向量类型
- 「合集」MySQL 8.x 系列文章汇总
- 如何选择适合的 MySQL Connector/J 版本
- [TiDB]
- 星辰考古:TiDB v4.0 进化前夜
- 国产基础软件“出海”标杆炼成记
- 敢于公布BUG的国产数据库才是好数据库
- [PG]
- [RL9] Rocky Linux 9.4 搭载 PG 16.1
- 即将告别PG 12,建议升级到PG 16.3版本
- 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行
– / END / –
👉 这里可以找到我
- 微信公众号:少安事务所
- 墨天轮:严少安
- PGFans: 严少安
- ITPUB:少安事务所
- TiDB 专栏:@ShawnYan
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~