2026年4月21日,MySQL 官方同时发布了三个重要版本:8.0.46(8.0 线的最后一个版本)、8.4.9 LTS(当前 LTS 线的维护更新),以及 9.7.0 LTS(从创新版本正式转为长期支持版本)。这意味着陪伴我们八年的 MySQL 8.0 正式谢幕,而全新的 LTS 时代正在开启。☕

01. 八年陪伴,正式谢幕:MySQL 8.0 的生命周期回顾
MySQL 8.0 于 2018 年 4 月 19 日正式 GA,至今已经走过了整整八个年头。作为 MySQL 历史上最为成功的一个大版本,8.0 带来了太多值得铭记的变革:窗体函数、CTE(公用表表达式)、InnoDB 集群、JSON 数据类型的全面增强、以及默认认证插件从 mysql_native_password 切换到 caching_sha2_password 等等。
2026 年 4 月 21 日发布的 MySQL 8.0.46,是这个伟大版本的"最后一舞"。从这一天起,MySQL 8.0 正式进入 Oracle 的 Sustaining Support 阶段,说白了就是:Oracle 不再为它提供任何新的安全补丁、bug 修复或功能更新。
笔者梳理了一下 MySQL 8.0 从诞生到谢幕的关键节点:
| 时间节点 | 版本/事件 | 意义 |
|---|---|---|
| 2016 年 9 月 | 8.0.0 DM | 首次亮相,开发里程碑 |
| 2018 年 4 月 | 8.0.11 GA | 正式生产可用 |
| 2023 年 7 月 | 8.0.34+ | 仅修复 bug,不再加新功能 |
| 2023 年 10 月 | MySQL 5.7 EOL | 上一代生命周期结束 |
| 2024 年 4 月 | 8.4.0 LTS GA | 新的 LTS 线诞生 |
| 2026 年 4 月 | 8.0.46 EOL | 8.0 产品线正式谢幕 |
说实话,八年时间对于一个数据库大版本来说已经相当长了。对比一下,MySQL 5.7 从 2015 年 GA 到 2023 年 EOL,也恰好是八年。从第三方视角来看,Oracle 这个生命周期管理还是相当有规律的,给了用户充足的迁移窗口。
不过我要提醒各位小伙伴:8.0 EOL 可不是说着玩的。2026 年 4 月 30 日之后,任何新发现的 CVE 漏洞都不会再为 8.0 提供官方补丁。如果你的系统还在跑 8.0,且处于合规要求严格的环境(比如金融、电信、政务),那这就是一个必须严肃对待的风险信号了。
本文作者:公众号「少安事务所」,由 严少安 主笔,专注于数据 & AI 领域技术传播。个人主页:https://shawnyan.cn/
02. 8.0 EOL 之后的现实影响与应对策略
不再有安全补丁,风险正在累积
从 2026 年 5 月 1 日起,运行 MySQL 8.0 的实例将面临以下现实:
| 风险维度 | 具体表现 | 影响程度 |
|---|---|---|
| 安全漏洞 | 新发现的 CVE 无官方补丁 | 🔴 极高 |
| 合规审计 | PCI DSS 4.0.1、等保 2.0 等可能不通过 | 🔴 极高 |
| 第三方依赖 | OpenSSL、cURL、zlib 等库 CVE 同样无补丁 | 🟠 高 |
| 技术支持 | Oracle 官方不再提供技术支持 | 🟡 中 |
| 功能缺失 | 无法使用 9.x 的新特性 | 🟢 低(对稳定运行而言) |
笔者的建议是:尽快安排升级,不要心存侥幸。数据库这玩意儿不像前端框架,可以随便折腾。该升级时就升级,避免长期安全风险。
云厂商给的"缓刑期"
好消息是,如果你跑在公有云的托管数据库上,各大云厂商都给了一定的缓冲期:
| 云厂商 | 标准支持截止日期 | 扩展支持截止日期 | 备注 |
|---|---|---|---|
| Oracle MySQL HeatWave | 2026 年 4 月 | 2027 年 4 月 | 自动升级到 8.0.46 |
| AWS RDS | 2026 年 7 月 31 日 | 2029 年 7 月 31 日 | 建议尽快升级 |
| AWS Aurora v3 | 2028 年 4 月 30 日 | 2029 年 7 月 31 日 | 最长的缓冲期 |
| Google Cloud SQL | 2027 年 1 月 1 日 | 2029 年 7 月 1 日 | 标准支持延长了半年 |
| Azure Database for MySQL | 2026 年 12 月 31 日 | 2029 年 5 月 31 日 | 微软给到了年底 |
不过要提醒各位,这些"缓刑期"只是让你有时间做升级规划,不是让你继续长期停留在 8.0 的理由。笔者的建议是,无论云厂商给多长的缓冲期,都应该在 2026 年内完成向 8.4 LTS 的迁移。
第三方支持方案
如果确实有特殊情况需要继续在 8.0 上运行一段时间,可以考虑第三方支持:
- Percona:提供最长三年的 EOL 后安全更新和 24x7 支持,最终目标是引导迁移到 Percona Server for MySQL
- TuxCare:提供 Endless Lifecycle Support (ELS),覆盖 MySQL 核心组件和所有捆绑的第三方库
但说实话,第三方支持的成本不低,而且终究是个过渡方案。从长远来看,升级到官方支持的 LTS 版本才是正道。
03. 稳扎稳打的守护者:MySQL 8.4.9 LTS 深度解读
MySQL 8.4 是 Oracle 新发布模型下的第一个 LTS 版本,于 2024 年 4 月 30 日 GA。按照 Oracle 的承诺,8.4 LTS 将获得 5 年的 Premier Support + 3 年的 Extended Support,也就是说支持到大约 2032 年 4 月。对于追求稳定的企业用户来说,这是一个非常可靠的选择。
2026 年 4 月 21 日发布的 MySQL 8.4.9 是 8.4 LTS 线的第九个维护版本。虽然是个维护版,但内容相当扎实。
安全相关
OpenSSL 升级到 3.5.5:对于捆绑 OpenSSL 的平台,这次更新把 OpenSSL 库升级到了 3.5.5 版本。OpenSSL 3.5 系列带来了不少安全修复和性能改进,具体可以参考 OpenSSL 官方的 CHANGES.md。在企业环境中,OpenSSL 的版本直接关系到 TLS 连接的安全性和合规性,所以这个更新非常重要。
zlib 升级到 1.3.2:压缩库的小版本升级,包含了一些压缩相关的 bug 修复。对于使用压缩连接或者 COMPRESS() 函数的场景有影响。
InnoDB 存储引擎修复
MySQL 8.4.9 在 InnoDB 方面修复了几个笔者觉得值得关注的问题:
| Bug 编号 | 问题描述 | 影响 |
|---|---|---|
| Bug #39040128 | 多值索引(multi-value indexes)相关问题 | 使用 JSON 多值索引的查询可能返回错误结果 |
| Bug #39033858 | 并行读取器(parallel reader)问题 | 并行查询场景下的稳定性 |
| Bug #39040226 | 大型表 FTS 索引构建时的内存优化 | 减少全文索引构建的内存占用 |
| Bug #38370155 | CREATE INDEX + 高 innodb_parallel_read_threads 导致磁盘空间耗尽 |
严重时可导致实例故障 |
| Bug #38169053 | TRUNCATE TABLE 相关问题 |
DDL 操作的正确性 |
| Bug #85060 | 计算最大索引记录大小时可能触发 assertion failure | 特定 schema 下的稳定性 |
其中 Bug #38370155 需要注意一下:如果你在生产环境使用了较高的 innodb_parallel_read_threads 值(比如超过 16),并且在 8.4.8 或更早版本上遇到过磁盘空间莫名其妙爆满的情况,这个修复就是为你准备的。建议升级后密切观察磁盘空间使用率的变化。
Atomic DDL 改进
MySQL 8.4.9 修复了一个长期存在的问题:在包含虚拟生成列的表上,使用 LOCK=NONE 删除列之前会失败(Bug #83557 / Bug #24962142)。这个修复使用了 Online DDL 的伙伴来说是个好消息,意味着更多的表结构变更可以在线完成,减少对业务的停机影响。
遥测配置增强
MySQL 8.4.9 新增了一个比较有意思的小特性:现在可以在命令行或配置文件中通过 performance-schema-meter 参数来启用或禁用 Telemetry meters 了。虽然 Telemetry 在 8.4 中还是企业版功能,但这个配置层面的改进说明 Oracle 在可观测性方面的持续投入。
04. 重磅登场:MySQL 9.7.0 LTS 全面解读
如果说 MySQL 8.4.9 是"稳扎稳打"的维护更新,那 MySQL 9.7.0 就是这次发布中的"主角光环"。2026 年 4 月 21 日,MySQL 9.7.0 正式从 Innovation Release 转变为 LTS(Long-Term Support)版本,这意味着它将成为未来数年 MySQL 生态的核心支柱。

笔者对 MySQL 9.7.0 的评价是:这是 MySQL 近两年来最重要的一个版本。不是因为某一个炸裂的新特性,而是因为 Oracle 在这个版本上展现出了不同以往的开放态度:大量原本只存在于 Enterprise Edition 的功能,现在被下放到了 Community Edition。这对于广大 MySQL 用户来说,绝对是利好消息。🌻
企业版特性逐步下放社区版
这是 MySQL 9.7.0 最让人振奋的变化。以下组件此前仅在 MySQL 企业版中可用,现在逐步向社区版开放:
| 组件名称 | 功能描述 | 适用场景 |
|---|---|---|
| Replication Applier Metrics Component | 复制应用器指标收集 | 主从复制监控、延迟诊断 |
| Group Replication Flow Control Statistics Component | 组复制流控统计 | MGR/InnoDB Cluster 性能调优 |
| Group Replication Resource Manager Component | 组复制资源管理器 | 自动检测资源耗尽、保护集群稳定 |
| Group Replication Primary Election Component | 组复制主节点选举 | 基于数据新鲜度的智能选主 |
| Telemetry Component (OpenTelemetry/OTLP) | 可观测性数据采集 | 现代云原生监控体系集成 |
这些可观测性特性对于正在使用 MIC 或者组复制的小伙伴来说,这简直就是幸福时刻。
在 MySQL 9.7.0 社区版中,这些组件可以通过以下方式安装:
-- 安装复制应用器指标组件
INSTALL COMPONENT 'file://component_replication_applier_metrics';
-- 验证安装状态
mysql> SELECT * FROM mysql.component;
+--------------+--------------------+----------------------------------------------+
| component_id | component_group_id | component_urn |
+--------------+--------------------+----------------------------------------------+
| 1 | 1 | file://component_validate_password |
| 2 | 2 | file://component_replication_applier_metrics |
+--------------+--------------------+----------------------------------------------+
2 rows in set (0.000 sec)
超图优化器正式登陆社区版
Hypergraph Optimizer 是 MySQL 近年来在查询优化器方面最重要的创新之一。它采用超图模型来探索更广泛的连接计划空间,包括 Bushy Tree 连接方式,并支持基于代价的 Hash Join 选择和 Interesting Order 优化。
在 MySQL 9.7.0 之前,Hypergraph Optimizer 只在企业版中提供。现在,社区版用户也可以免费使用了。
启用方式非常灵活:
-- 会话级启用
SET optimizer_switch='hypergraph_optimizer=on';
-- 全局启用(需 SUPER 权限)
SET GLOBAL optimizer_switch='hypergraph_optimizer=on';
-- 持久化到配置文件
SET PERSIST optimizer_switch='hypergraph_optimizer=on';
-- 针对单条 SQL 使用 hint
SELECT /*+ SET_VAR(optimizer_switch='hypergraph_optimizer=on') */
o.order_id, c.customer_name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE o.order_date > '2026-01-01';
笔者建议:Hypergraph Optimizer 对于复杂的多表 JOIN 查询(特别是 4 张表以上的 JOIN)效果最为明显。如果你的业务有这类查询,可以在测试环境先开启对比测试,观察执行计划的变化。但要注意,它不是万能的,对于简单的单表查询或两表 JOIN,传统的优化器可能反而更高效。
JSON Duality Views:关系型与文档型的完美融合
JSON Duality Views 是 MySQL 9.x 系列引入的一个非常有意思的特性。它允许你在同一个底层数据上,既使用传统的 SQL 关系查询,又使用层级化的 JSON 文档模型,实现了关系型完整性与 JSON 灵活性的统一。
熟悉 Oracle AI Database 26ai 的小伙伴可能一下就想到了 Oracle 数据库的新增特性:JSON 二元视图。
是的,如出一辙,但是 MySQL 中更像是简化版本。
在 MySQL 9.7.0 之前,社区版只支持对 JSON Duality Views 的 DDL 操作(创建、修改视图结构)。而现在,完整的 DML 操作(INSERT、UPDATE、DELETE)也向社区版开放了。此外,还新增了对自增列(auto-increment)在 DML 操作中的支持。
这个特性的实际意义在于:你不再需要为了同时满足关系查询和 JSON 访问而维护两份数据,也不需要写复杂的 ORM 映射代码。一张表,一个视图,两种访问方式。
-- 创建示例表
CREATE TABLE customers (
customer_id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
email VARCHAR(100),
address VARCHAR(100)
);
-- 创建 JSON Duality View
CREATE OR REPLACE JSON RELATIONAL DUALITY VIEW customer_dv AS
SELECT JSON_DUALITY_OBJECT(
WITH(INSERT, UPDATE, DELETE) -- 权限声明放在对象内部
'_id' : customer_id, -- MySQL 要求必须定义一个 _id 作为主键映射
'name' : name,
'email' : email,
'address' : address
)
FROM customers;
-- 通过视图进行 DML 操作
INSERT INTO customer_dv VALUES ( '{
"address": "少安事务所",
"email": "aaa@shawnyan.cn",
"name": "ShawnYan",
"_id": 1 }');
-- 查询数据
SELECT * FROM customer_dv;
SELECT * FROM customers;

需要注意的是,在当前实现中,JSON DUALITY VIEW 还不支持直接投影类型为 JSON 的原始列,否则会报错。
mysql> CREATE TABLE customers (
-> customer_id INT PRIMARY KEY AUTO_INCREMENT,
-> name VARCHAR(100),
-> email VARCHAR(100),
-> address JSON -- 还不支持
-> );
Query OK, 0 rows affected (0.009 sec)
mysql> CREATE JSON DUALITY VIEW customer_dv AS
-> SELECT JSON_DUALITY_OBJECT(
-> WITH(INSERT, UPDATE, DELETE) -- 权限声明放在对象内部
-> '_id' : customer_id, -- MySQL 要求必须定义一个 _id 作为主键映射
-> 'name' : name,
-> 'email' : email,
-> 'address' : address
-> )
-> FROM customers;
ERROR 6466 (HY000): Invalid JSON duality view definition: Object "Root Node" projecting "shawnyan.customers" includes column "address" of type "JSON". This type of projection is not supported.
认证安全增强:PBKDF2 + SHA512
MySQL 9.7.0 在认证安全方面做了一个重要增强:caching_sha2_password 认证插件现在支持 PBKDF2(Password-Based Key Derivation Function 2)存储格式,并且可以使用 SHA512 哈希算法。
PBKDF2 相比于传统的密码哈希方式,通过增加迭代次数大幅提升了暴力破解的难度。而使用 SHA512 替代 SHA256,进一步增强了安全性。最重要的是,这个变化对客户端完全透明,不需要修改任何客户端代码或驱动版本,服务器端升级后自动生效。
安全性和兼容性往往是一对矛盾,但 Oracle 这次做到了"既安全又省心"。对于处理敏感数据的企业(金融、医疗、政务),建议关注一下。
Profile-Guided Optimization (PGO) 构建支持
PGO 是一种编译器优化技术,它通过收集程序运行时的实际执行剖面数据,来指导编译器生成更优化的二进制代码。简单说就是:用真实的工作负载来告诉编译器"哪里该优化",从而生成跑得更快的程序。
MySQL 9.7.0 现在支持使用 PGO 构建 MySQL。对于 RPM 包构建,在 SLE/openSUSE 和 Fedora 平台上,可以通过以下方式启用:
# 使用 rpmbuild 构建启用 PGO 的 MySQL RPM 包
rpmbuild --rebuild --define="with_pgo 1" mysql-9.7.0-*.src.rpm
cgroups 支持增强
MySQL 9.7.0 新增了对 cpuset cgroup 的支持。在容器化和云原生部署越来越普及的今天,这个改进非常实用。
具体来说,MySQL Server 现在能够正确识别并遵守 cpuset-cpus cgroup 控制器设置的 CPU 限制,准确计算分配给 MySQL 的逻辑 CPU 数量。这对于以下场景尤其重要:
- Kubernetes 部署:设置了 CPU limit 和 request 的 Pod
- Docker/Podman 容器:使用
--cpuset-cpus限制的容器 - systemd 服务:通过
AllowedCPUs设置了 CPU 亲和性的服务
# 在 Podman 中运行 MySQL 9.7.0,限制使用 CPU 0-3
Podman run -d \
--name mysql-shawnyan.cn \
--cpuset-cpus="0-3" \
--memory="8g" \
mysql:9.7.0
其他值得关注的改进
Clone 插件升级:9.7.0 的 Clone 插件现在支持连续 LTS 版本之间的克隆(比如从 9.7.0 克隆到未来的 10.x LTS)。这对于大版本升级场景非常实用,可以显著减少停机时间。
新增 replica_allow_higher_version_source 变量:这个变量控制是否允许从高版本源复制到低版本副本。在某些滚动升级场景下可能有用,但默认值是 OFF,需要谨慎使用。
Audit Log 增强:新增了基于时间自动轮转(audit_log.rotate_on_time)和无效过滤器自动恢复(audit_log.filter_recovery_mode)功能。对于需要严格审计合规的企业,这些功能可以减少运维负担。
05. 三个版本横向对比:该怎么选?
| 对比维度 | MySQL 8.0.46 | MySQL 8.4.9 LTS | MySQL 9.7.0 LTS |
|---|---|---|---|
| 发布日期 | 2026-04-21 | 2026-04-21 | 2026-04-21 |
| 版本定位 | EOL(生命周期结束) | 当前 LTS 维护版 | 新一代 LTS |
| 支持截止 | 已结束(2026-04-30) | 约 2032-04 | 约 2034-04 |
| Hypergraph Optimizer | ❌ 无 | ❌ 无(企业版 有) | ✅ 社区版 可用 |
| JSON Duality Views DML | ❌ 无 | ❌ 无 | ✅ 社区版 可用 |
| PBKDF2 认证 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 |
| cgroups cpuset | ❌ 不支持 | ❌ 不支持 | ✅ 支持 |
| caching_sha2_password 默认 | ✅ 是 | ✅ 是(更严格) | ✅ 是(+PBKDF2) |
| mysql_native_password | 默认启用 | 默认禁用 | 已移除 |
| 升级路径 | - | 可直接升级 | 需先从 8.0→8.4 |
选型建议
根据少安多年的生产环境实战经验,给出以下选型建议:
选择 MySQL 8.4.9 LTS 的场景:
- 你的业务对稳定性要求极高,不追求新特性
- 应用代码较老,担心 9.x 的兼容性问题
- 计划短期内(1-2 年内)完成升级,给团队更多测试时间
- 当前在 8.0 上跑得好好的,只是想先脱离 EOL 风险
选择 MySQL 9.7.0 LTS 的场景:
- 你希望获得最新的性能优化和安全特性
- 正在使用或计划使用 MySQL InnoDB Cluster / Group Replication
- 有复杂的 JOIN 查询,想尝试 Hypergraph Optimizer
- 有 JSON 数据处理需求,想使用 Duality Views
- 云原生部署,需要完善的 cgroup 支持
- 有充足的测试资源来做升级验证
升级路径:
MySQL 8.0.x → MySQL 8.4.x LTS → MySQL 9.7.0 LTS
↑ ↑ ↑
当前版本 2026 年目标 最终目标
常见需要提前处理的问题
- mysql_native_password 用户
-- 查找还在使用旧认证插件的用户
SELECT user, host, plugin
FROM mysql.user
WHERE plugin = 'mysql_native_password';
-- 迁移到 caching_sha2_password
ALTER USER 'old_user'@'%'
IDENTIFIED WITH caching_sha2_password
BY 'NewStrongPassword123!';
-- 如果暂时无法迁移,可在 8.4 中临时启用(不建议长期使用)
# 在 my.cnf 中添加:
# [mysqld]
# mysql_native_password = ON
- 已移除的系统变量
以下变量在 8.4/9.7 中已被移除或改名,需要提前清理 my.cnf:
# 检查配置文件中是否有已废弃的变量
grep -E "expire_logs_days|query_cache|innodb_log_files_in_group|innodb_log_file_size" /etc/my.cnf
# 替换方案:
# expire_logs_days → binlog_expire_logs_seconds
# query_cache_* → 已完全移除(8.0 开始)
# innodb_log_files_in_group / innodb_log_file_size → innodb_redo_log_capacity
- 外键约束检查
MySQL 8.4 开始要求外键引用的父表列必须有唯一索引,关联参数 restrict_fk_on_non_standard_key:
-- 检查是否存在非唯一索引的外键引用
SELECT
rc.TABLE_NAME, rc.CONSTRAINT_NAME,
UNIQUE_CONSTRAINT_NAME, REFERENCED_TABLE_NAME
FROM information_schema.REFERENTIAL_CONSTRAINTS rc
JOIN information_schema.TABLE_CONSTRAINTS tc
ON rc.UNIQUE_CONSTRAINT_NAME = tc.CONSTRAINT_NAME
WHERE tc.CONSTRAINT_TYPE != 'UNIQUE';
07. 写在最后:MySQL 的未来与我们的选择
MySQL 8.0 的谢幕标志着一个时代的结束,但也意味着新的开始。从笔者观察到的趋势来看,Oracle 在 MySQL 9.7 LTS 上展现出了不同以往的开放姿态:大量 Enterprise 特性下放、Community 和 Enterprise 的差距在缩小、对云原生场景的适配越来越完善。
当然,社区也有一些担忧的声音。2025 年秋天 Oracle 对 MySQL 团队的调整,让不少人对 MySQL 的长期发展心存疑虑。2026 年 2 月,MySQL 社区经理 Lefred 出走 MariaDB 基金会 。MySQL 社区版对向量功能支持远不及竞品。
对于企业和开发者来说,笔者的建议是:不要被情绪左右,用脚投票。MySQL 仍然是世界上最成熟、生态最丰富的开源关系型数据库。9.7 LTS 的发布,让我们有充分的理由继续信任它。

最后,还在使用 MySQL 8.0 及之前版本的小伙伴们,真的该动起来为升级做准备了。
Have a nice day ~ ☕
🌻 往期内容 ▼
- 如期而至!MySQL 9.5.0 创新版本发布
- MySQL 9.4.0 正式发布,支持 RHEL 10 和 Oracle Linux 10
- MySQL 9.1.0 新特性与系统变量变化
- MySQL 9.1.0 创新版发布!MySQL 8.0.40,8.4.3 小版本迭代
- MySQL 9.0.0 新鲜出炉!支持向量类型
- 「合集」MySQL 8.x 系列文章汇总
🌻 其他内容 ▼
- 虚谷数据库发明专利大盘点
- 金仓社区2周年了
- DBClaw与TRAE穿搭指南:数据库诊断工具的正确打开方式
- TiDB Radio | 平凯宇宙新鲜事儿 (2026.03.31)
- IvorySQL社区又发证书了
- 告别古法部署,用 OpenClaw 安装 KaiwuDB 3.1.0 并体验新特性
- 融合数据库的探索与实践
- 官宣|星珩联盟,正式启航!
- 碎碎念 | 2026年的Flag
- 苦等三年!Oracle AI Database 26ai本地服务器版终于来了
👉 这里有得聊
如果对国产基础软件(操作系统、数据库、中间件)、AI、Vibe Coding、OpenClaw 、Hermes Agent 等感兴趣,可以加群一起聊聊。关注微信公众号:(少安事务所),后台回复[群],即可看到入口。如果这篇文章为你带来了灵感或启发,请帮忙『点赞、推荐、转发』吧,感谢!ღ( ´・ᴗ・` )~




