刚升级到MySQL8.0就凉凉,是时候准备再次重启升级了

    很多同学可能刚因MySQL5.7 EOL后将MySQL5.7升级到了MySQL8.0。但是再一看MySQL8.0的生命周期,彻底绷不住了。又要升级到MySQL8.4了,开发同学也要配合进行兼容性验证及调整了。

1331dc6c84b23e99487278451025c49.png

    从上面官方公布的声明周期表中可以看到MySQL 8.0 版本的 “保质期” 要到了!预计在2026年4月,它就将迎来EOL(End of Life,生命周期终止),届时官方不再提供安全更新、漏洞修复,使用风险直线上升!这个时候,2024 年 4 月 30 日发布的 MySQL 8.4 LTS 版本,就成了咱们升级的首选!今天就来给大家盘一盘,MySQL8.4 版本到底有哪些超实用的新特性及变更点。

新特性

根据官方文档的介绍,对比MySQL8.0而言,MySQL8.4有如下新特性:

1. 安全增强

  • 默认禁用mysql_native_password插件:从8.4.0开始,默认不再启用mysql_native_password认证插件。如果需要启用,必须在配置文件([mysqld]部分)设置mysql_native_password=ON或启动时使用--mysql-native-password=ON。

  • TLS证书强制验证:新增系统变量tls-certificates-enforced-validation,用于在启动或重新加载证书时强制验证。如果启用,发现无效证书将阻止启动或加载,并发出警告。

  • WebAuthn认证插件:新增基于FIDO/FIDO2标准的WebAuthn认证插件(企业版),支持使用安全密钥、生物识别等设备进行认证

  • 新增权限:

1)FLUSH_PRIVILEGES权限:专门用于执行FLUSH PRIVILEGES命令(之前需要RELOAD权限)。升级时,如果用户已有RELOAD权限,会自动授予FLUSH_PRIVILEGES

2)TRANSACTION_GTID_TAG权限:用于设置GTID标签(见下文GTID标签化)

  • LDAP认证超时控制:新增LDAP连接和响应超时参数(如authentication_ldap_simple_connect_timeout等),默认30秒(仅Linux)

2. InnoDB存储引擎优化

系统变量默认值变更:

  • innodb_buffer_pool_in_core_file:默认改为OFF(如果支持MADV_DONTDUMP),否则ON

  • innodb_parallel_read_threads:默认值改为可用逻辑处理器数/8(最小4)

  • innodb_read_io_threads:默认值改为可用逻辑处理器数/2(最小4)

  • temptable_max_ram:默认值改为总内存的3%(在1-4 GiB范围内)

  • temptable_max_mmap:默认值改为0(禁用)

  • 专用服务器自动配置:当innodb_dedicated_server=ON时,innodb_redo_log_capacity的计算从基于内存改为基于CPU,且不再改变innodb_flush_method的值

3. 复制与Group Replication

  • GTID标签化(Tagged GTIDs):扩展GTID格式为UUID:TAG:NUMBER,允许为事务组分配标签(如区分数据操作和运维操作)。使用:

    SET gtid_next = 'AUTOMATIC:tag_name'(会话级)或SET gtid_next = UUID:tag_name:NUMBER(单事务,需要TRANSACTION_GTID_TAG权限)

  • 多线程复制(MTA)支持SQL_AFTER_GTIDS:之前使用SQL_AFTER_GTIDS会强制切换为单线程,现在支持并行复制,提高性能

  • Group Replication增强:

    1)  默认group_replication_consistency=AFTER(强一致性)

    2) 新增group_replication_preemptive_garbage_collection(单主模式预垃圾回收)和group_replication_preemptive_garbage_collection_rows_threshold(触发阈值)

    3) 新增性能指标(如MEMBER_FAILURE_SUSPICIONS_COUNT)用于网络诊断

    4) Clone插件跨小版本兼容:允许在同一个大版本(如8.4.x)的不同小版本间克隆(例如8.4.0克隆到8.4.14)

4. 功能改进

  • 直方图自动更新:使用ANALYZE TABLE ... UPDATE HISTOGRAM AUTO可启用直方图自动更新(默认手动)。

  • EXPLAIN增强:

1) EXPLAIN FOR SCHEMA schema_name ...:在指定schema中解释查询。

2) EXPLAIN FORMAT=JSON INTO @var:将JSON格式结果存入变量。

新增explain_json_format_version系统变量(1:传统线性格式;2:新的访问路径格式)。

3)集合操作优化:EXCEPT和INTERSECT默认使用Hash算法(通过hash_set_operations控制),可通过set_operations_buffer_size调整内存。

  • 新增SQL语法:

SHOW PARSE_TREE:显示SELECT语句的解析树(仅调试版)。

TABLESAMPLE子句:支持抽样查询(如SELECT ... FROM table_name TABLESAMPLE BERNOULLI(10))。

5. 企业版增强

对于使用企业版的同学,有如下变更:

  • 数据脱敏(Data Masking):

1)支持自定义脱敏字典存储库(通过component_masking.masking_database变量)。

2)支持定期刷新脱敏字典(component_masking.dictionaries_flush_interval_seconds)。

  • 防火墙(Firewall):

1)存储过程改为事务性操作(错误时回滚)。

2)新增mysql_firewall_reload_interval_seconds变量定期重载规则。

3) 支持自定义防火墙数据库(mysql_firewall_database)。

4) 弃用用户级防火墙存储过程(改用组策略)。

6. 弃用和移除

  • 弃用(未来版本移除):

1)变量:group_replication_allow_local_lower_version_join

2)通配符授权:GRANT ... ON db%.*(未来%和_将视为普通字符)

3)非标准外键:引用非唯一键或部分键的外键(需设置restrict_fk_on_non_standard_key=OFF启用)

  • 立即移除:

1)插件:keyring_file、keyring_encrypted_file、keyring_oci(改用对应的Component)。

2)语句:FLUSH HOSTS(改用TRUNCATE performance_schema.host_cache)。

3) 复制语法:CHANGE MASTER TO → 改用CHANGE REPLICATION SOURCE TO。

3)系统变量:default_authentication_plugin(改用authentication_policy)。

变更列表如下图所示:

image.png

新特性举例

1. 加密插件

mysql_native_password加密插件默认已经禁用,如果需要兼容低版本客户端,需要显式启动后才能使用。例如想直接创建一个mysql_native_password加密方式的用户时会报错。

# 默认方式创建用户mysql>  create user u1 identified by 'U1@2025.com';Query OK, 0 rows affected (0.04 sec)mysql> SELECT plugin FROM mysql.user WHERE user='u1';+-----------------------+| plugin                |+-----------------------+| caching_sha2_password |+-----------------------+1 row in set (0.00 sec)    #  实用mysql_native_password插件创建用户mysql> CREATE USER u2  IDENTIFIED WITH 'mysql_native_password' BY 'U2_Passwd';ERROR 152
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据库干货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值