这次没有跳票。回顾 MySQL 9.4.0 发布 。
2025 年 10 月 21 日,MySQL 9.5.0 创新版本发布。
本次发布带来权限管控强化、性能自动优化、安全加密升级等核心更新,同时修复数十个稳定性问题。
同步更新的还有 MySQL 8.4.7 和 MySQL 8.0.44。
需要注意的是,MySQL 8.0.x 将于 2026 年第二季度结束生命周期(EOL),建议大家尽早考虑升级到 MySQL 8.4.x LTS。
一、安全与权限:更精细的管控,更严格的防护
安全是数据库的基石,MySQL 9.5.0在账户权限、认证加密、数据传输三方面做了关键优化,尤其适合对权限管控要求高的企业场景。
1. 账户角色管理:新增“强制角色”激活机制
新增系统变量 activate_mandatory_roles
(默认开启),用于单独激活“强制角色”,与原有activate_all_roles_on_login
(登录激活所有角色)形成互补逻辑:
- 若
activate_all_roles_on_login
开启:忽略activate_mandatory_roles
,强制角色+已授权角色全部激活; - 若
activate_all_roles_on_login
关闭、activate_mandatory_roles
开启:除账户默认角色外,额外激活强制角色; - 两者均关闭:仅激活账户默认角色。
此前角色激活要么“全激活”要么“仅默认”,新增“强制角色”后,可针对核心权限(如数据只读、审计日志查看)设置“必须生效”,即使账户未主动授权,也能确保合规性(如金融场景的“审计角色强制启用”)。
2. 认证加密:密码安全性与兼容性双提升
密码哈希强度升级:caching_sha2_password_digest_rounds
默认值从 5000 提升至 10000,迭代次数增加意味着暴力破解难度呈指数级上升,同时兼容原有 caching_sha2_password
认证插件,无需修改应用连接逻辑。
LDAP认证废弃旧算法:SCRAM-SHA-1
认证方法被标记为废弃,默认改用更安全的 SCRAM-SHA-256
,对应变量 authentication_ldap_sasl_auth_method_name
默认值同步更新,需注意旧 LDAP 集成场景的兼容性适配。
密钥环功能修复:解决了密钥环组件无法读取短路径配置文件、通用密钥函数处理无效参数异常的问题,避免加密数据因配置问题导致的访问失败。
3. 复制传输:默认开启全链路加密
replication(复制)连接默认启用加密,涉及三个核心参数变更:
CHANGE REPLICATION SOURCE TO
语句的SOURCE_SSL
默认值改为 1(启用);group_replication_ssl_mode
默认值改为REQUIRED
(必须加密);group_replication_recovery_use_ssl
默认值改为ON
(恢复数据时加密)。
此前复制数据传输可能存在明文风险,此次默认加密后,主从节点、MGR 集群间的数据同步无需额外配置即可防护“中间人攻击”,尤其适合跨机房、云环境的部署场景。
二、性能优化:自动适配硬件,减少手动调参
MySQL 9.5.0 在 InnoDB、线程池、二进制日志等核心组件引入“自动配置”逻辑,降低运维成本的同时,让性能更贴合硬件资源。
1. InnoDB:日志写入线程智能开关
innodb_log_writer_threads
(日志写入线程)的默认值不再固定,而是根据“是否开启二进制日志”和“CPU核心数”动态判断:
二进制日志状态 | CPU核心数条件 | innodb_log_writer_threads 默认值 |
---|---|---|
关闭(log_bin=OFF) | ≤4核 | OFF(单线程) |
关闭(log_bin=OFF) | >4核 | ON(多线程) |
开启(log_bin=ON) | ≤32核 | OFF(单线程) |
开启(log_bin=ON) | >32核 | ON(多线程) |
日志写入是 InnoDB 的性能瓶颈之一,多线程适合高并发场景,但会增加 CPU 开销。此次动态适配逻辑,能在“低配置机器避免资源浪费”和“高配置机器释放性能”之间找到平衡,无需 DBA 手动判断。
2. 线程池:硬件感知自动调参
线程池插件新增“硬件自动配置”功能,可根据服务器 VCPU 数量自动设置 5 个核心参数的默认值,同时校验并修正手动配置的错误参数(如参数值超出合理范围时自动调整,并记录警告日志):
thread_pool_size
(线程池大小)thread_pool_max_transactions_limit
(单线程池最大事务数)thread_pool_query_threads_per_group
(每组查询线程数)thread_pool_algorithm
(调度算法)thread_pool_max_unused_threads
(最大空闲线程数)
此前线程池参数需根据业务并发手动调整(如CPU核数2倍设置线程池大小),对运维经验要求高。自动配置后,新手也能快速搭建高性能线程池,减少“参数调错导致的性能瓶颈”。
3. 二进制日志:依赖历史容量大幅扩容
binlog_transaction_dependency_history_size
(事务依赖历史大小)的默认值从 25000 提升至 100 万,最大值从 100 万提升至 1000 万。
该参数控制二进制日志中存储的“事务依赖关系”数量,容量不足会导致依赖信息丢失,进而影响主从复制的并行回放效率。此次扩容后,高并发场景(如秒杀、大促)下的复制延迟问题将显著缓解。
三、功能增强:JSON、多语言引擎、工具链升级
除了基础能力优化,MySQL 9.5.0 还在 JSON 处理、JavaScript 支持、诊断工具等方面新增实用功能,覆盖更多业务场景。
1. JSON 二元视图(JSON Duality Views):修复稳定性问题
JSON 二元视图是 MySQL 用于“关系表与JSON数据双向映射”的功能,此次修复了5个关键问题,确保业务可用性:
- 支持 AUTO_INCREMENT 列显式插入0值,符合业务习惯。
- 禁止删除嵌套子视图的“单例子节点”,避免意外数据丢失。
- 解决含子查询的 WHERE 条件创建视图时的断言失败问题(此前可能导致数据库崩溃)。
- 修复 UPDATE 语句执行时的“地址映射错误”,避免服务异常退出。
- 统一 DML 与 SELECT 查询在
derived_merge=off
下的行为,减少逻辑不一致。
2. 多语言引擎(MLE):JavaScript 支持升级+内存自动配置
结果集大小限制提升:SQL 调用 JS 存储过程时的结果集上限提高,支持更大数据量的处理(如批量数据计算)。
JS 语法同步最新标准:MLE 的 JavaScript 支持升级至 ECMAScript 2025 规范,可使用箭头函数、解构赋值等新语法,开发存储过程更灵活;
内存自动分配:mle.memory_max
(MLE最大内存)默认按“物理内存 5%”计算,且限制在 0.4GB~32GB 之间,避免手动设置不当导致内存溢出或资源浪费。
3. 新增诊断工具:mysqldm 快速收集问题信息
新增客户端工具 mysqldm
(MySQL Diagnostic Monitor),可自动执行预定义查询,收集服务器诊断信息(如进程列表、锁状态、性能指标),并以JSON格式存储。
支持自定义输出目录、采集迭代次数、迭代间隔,方便 DBA 将信息提交给 Oracle Support 快速定位问题,减少“手动执行多条 SQL 收集信息”的繁琐操作。
四、兼容性与废弃:这些内容需要注意
升级前必须关注“参数变更”与“废弃与移除”列表,避免因依赖旧功能导致升级失败。
1. 系统变量默认值变化
explain_format
:从TRADITIONAL
更改为TREE
explain_json_format_version
:从 1 更改为 2。- 为了默认启用增强复制功能,
gtid_mode
的默认值已更改为 ON。此外,enforce_gtid_consistency
的默认值也更改为 ON。 - 从此版本开始,
innodb_change_buffering
的默认值为 ALL。这改进了二级索引更新的处理。
2. 已移除的功能
- 系统变量
group_replication_allow_local_lower_version_join
(MySQL 8.4.0 起废弃); - 系统变量
replica_parallel_type
(MySQL 8.0.29 起废弃); - 插件
semisync_master
(替换为semisync_source
)、semisync_slave
(替换为semisync_replica
)。
3. 标记为废弃的功能
- 密钥环插件
keyring_okv
:替换为keyring_kmip
组件,后者支持 KMIP 1.1 协议(兼容 Oracle Key Vault、Gemalto SafeNet 等主流密钥管理产品)。 SCRAM-SHA-1
认证方法:建议尽快迁移至SCRAM-SHA-256
。
4. 编译与系统兼容性
- 编译要求:CMake 最低版本升至 3.17.5,需提前升级编译工具。
- Solaris 系统:支持 Clang/GCC 编译,默认使用 OpenSSL 3,解决旧版本编译兼容性问题。
- Windows 系统:修复共享内存连接失败、含转义字符的用户名创建异常、非默认端口升级时的误报等问题。
总结
MySQL 9.5.0 作为创新版本,核心亮点是“自动化”与“安全性”——线程池、InnoDB日志线程、MLE内存的自动配置降低运维成本,复制加密、强制角色、密码强度升级强化安全防护,同时新增 mysqldm 工具提升问题排查效率。对于开发者来说,MySQL 9.5 的 JSON 支持增强、查询优化和性能提升无疑是最值得关注的特性之一。
对于企业级用户,让我们静待明年 2026 Q2 的 MySQL 9.7.x LTS 版本。
Have a nice day ~ ☕
想了解更多行业资讯
扫码关注👇
了解更多考试相关
扫码添加上智启元官方客服微信👇