8.0 已 EOL:主库先上 9.7 LTS,还是整批走 8.4
信源:Oracle MySQL 博客、MySQL 9.7 Release Notes、Percona《Inside MySQL 9.7 LTS Features》。
版本线先说清楚
MySQL 8.0.46 与 9.7.0 同批发布,8.0.46 是 8.0 的最后一个版本。2026 年 4 月起 8.0 正式 EOL,不再有安全补丁和 bug 修复。官方 release notes 给出的目标只有两个:8.4 LTS 或 9.7。
9.7.0 LTS 于 2026-04-21 GA,是 8.4 之后的第一个 LTS 线。四段版本号(MAJOR.MINOR.PATCH.UPDATE)在 9.7.4 引入,VERSION() 等旧接口保持三段兼容语义——升级脚本和监控里做版本号字符串比较的地方,得提前确认不会被四段号打断。
replica_allow_higher_version_source:先升主库这条路被打开了
以前主从版本要卡齐,本质上是因为低版本从库连不上高版本主库。新变量 replica_allow_higher_version_source 允许低版本从库从高版本主库复制,主版本不同也可以。
这让分批升级有了可行的排法:先把主库升上去,业务验证,再从库按自己的节奏滚动升级,不必整批实例同时停。反过来排——先升从库、最后切主——在 8.0 到 9.7 这种跨大版本场景里需要更多中间步骤,能省则省。
容器里给 4 核,线程池按宿主 32 核算的日子结束了
服务器现在遵守 cpuset-cpus cgroup 控制器的限制来计算可用逻辑 CPU 数。此前在 K8s 里给 MySQL 限 4 个 CPU,它可能仍按宿主 32 核来设置线程池。
对已经按旧行为调过参数(线程池大小、并发相关参数)的实例,升级后实际并发度会变,压测要在升级后重做一遍,不能直接沿用旧配置的容量结论。
Clone 插件的适用范围
Clone 插件只支持在 9.7.0 之后的连续 LTS 版本之间克隆。跨版本重建从库时,先确认两侧版本落在这个区间内,再决定是用 Clone 还是走 dump/load 重建。
目标小版本直接定在 9.7.1 之后
9.7.0 有若干较高严重等级的 CVE。Percona 的建议是用 9.7.1 或后续小版本,Percona Server for MySQL 干脆跳过了 9.7.0,直接发 9.7.1。所以路线一旦选 9.7,落点就是 9.7.1 起的小版本,不要拿 9.7.0 做灰度或长期在跑。
升级顺带会拿到的变化
认证:caching_sha2_password 支持 PBKDF2(SHA512)存储格式,纯服务端改动,客户端不需要改,管理员可以强制指定存储格式。老客户端不用重编。
社区版下放(原企业版)的组件:Replication Applier Metrics、Group Replication Flow Control Statistics、Group Replication Resource Manager、Group Replication Primary Election、Telemetry。Hypergraph Optimizer 可在社区版开启,支持 session、global、persist、启动参数、语句 hint 五种作用域。JSON Duality Views 支持 DML 与自增。
Group Replication 侧新增 group_replication_elect_prefers_most_updated,按 backlog 最少选新主;Resource Manager 支持自动驱逐不健康节点。
动手前的检查
-- 当前版本,确认是否还停在 8.0.4x
SELECT VERSION(), @@version_comment;
-- 9.7 才有;8.0 上应为空,升级后确认已生效
SHOW VARIABLES LIKE 'replica_allow_higher_version_source';
-- 从库侧:源端是谁、复制状态是否正常
SHOW REPLICA STATUS\G
-- GR 选主策略与资源管理
SHOW VARIABLES LIKE 'group_replication_elect_prefers_most_updated';
-- 认证插件与存储格式
SELECT user, host, plugin FROM mysql.user;
SHOW VARIABLES LIKE 'authentication_policy';
容器环境里再对一眼 cgroup 的可见核数(cgroup v2 路径):
cat /sys/fs/cgroup/cpuset.cpus.effective
nproc
两边一致,才说明新版的 cpuset 感知已经按你给的配额在算线程数。
结论落在排期上:目标版本取 9.7.1+,先升主库、验证,再用 replica_allow_higher_version_source 滚动升级 8.0 从库;如果这轮只求离开 EOL 且不想动复制拓扑,8.4 LTS 是另一条线。