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)。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




