MySQL 8.4 版本(LTS) 发布,一睹为快

2024-05-04 04:52

本文主要是介绍MySQL 8.4 版本(LTS) 发布,一睹为快,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Oracle 前几天发布了 MySQL 8.4 版本(LTS), 该版本是创新版的第一个长期支持版本。详细规划,请移步 技术译文 | 一文了解 MySQL 全新版本模型

关于 MySQL 的版本发布规划

图片

Oracle MySQL 官方开发团队推出的新版本将过渡到新的 MySQL 版本模型。MySQL 8.1.0 是第一个创新版本,8.0.34+ 将只进行错误修复,直到 8.0 生命周期结束(EOL,定于 2026 年 4 月)。

MySQL 8.x 版本最终将成为 LTS,这将为用户从 8.0.x 迁移到 8.x LTS 版本提供充足的时间。

对我们的影响 ,总结起来就是:
  1. 如果用户想要 MySQL 数据库的最新功能、改进和bug fix,请使用创新版本(例如 8.1.x、8.2.x、8.3.x 等)。

  2. 如果用户 MySQL 只需要错误修复,请使用 8.0.x 版本(例如 8.0.35、8.0.36、8.0.37 等)。

  3. 如果用户使用的是国内云厂商的RDS MySQL 数据库服务,具体版本支持计划请参考各个厂商的相关公告。

言归正传,聊聊 8.4 的技术特性。

8.4 功能变更

1   MySQL 密码认证

认证插件:默认情况下, mysql_native_password 插件被禁用, 如果需要启用该插件,需要在启动时指定 --mysql-native-password=ON 或者在my.cnf 文件里面配置 mysql_native_password=ON 

2 InnoDB 相关默认参数变化

重点说3个吧

innodb_io_capacity: 默认值改成了10000,之前是200。目前绝大部分磁盘都是 SSD  ,200 这个值的确少了点。

innodb_buffer_pool_instances: 调整取值的算法,取min(innodb_buffer_pool_size / innodb_buffer_pool_chunk_size *1/2,  逻辑 CPU * 1/4)

innodb_adaptive_hash_index:  默认改为 OFF ,之前是ON ,AHI 是 DDL 不稳定因素之一 ,这次终于默认关闭了。开启也带来不了多少性能提升。

其他的 各位读者朋友可以看官方文档或者下面的截图:

3  复制相关

主从复制参数  SOURCE_RETRY_COUNT  默认值变更为 10,也即主从复制关系异常时,从库尝试连接主库10次。每次间隔的时间由 SOURCE_CONNECT_RETRY 决定,默认 60s 。

在 MySQL 的主从复制配置中,SOURCE_RETRY_COUNT 和 SOURCE_CONNECT_RETRY 决定复制过程中从服务器尝试重新连接到主服务器的行为。

SOURCE_RETRY_COUNT:从服务器在复制过程中遇到错误(如网络问题或访问冲突)时,尝试重新访问主库的重试次数。默认情况下,如果从服务器在读取二进制日志文件时遇到错误,它会停止复制并等待下一次 poll 操作(通常是几秒到几十秒,取决于 REPLICATE_RECONNECT 参数的设置)。如果设置了 SOURCE_RETRY_COUNT,从服务器将在这个次数范围内尝试重新读取错误发生的位置,而不是立即停止复制。

SOURCE_CONNECT_RETRY:从服务器尝试重新连接到主服务器的间隔时间。当从服务器由于某些原因与主服务器的连接断开时(比如主服务器重启或网络中断),从服务器会等待 SOURCE_CONNECT_RETRY 指定的秒数后尝试重新建立连接。如果连接失败,从服务器将继续在每隔 SOURCE_CONNECT_RETRY 秒尝试重连,直到成功为止。

之前没有注意改参数,这次补习一下。

4  master/slave 关键字变化

前几年为了政治正确官方决定去掉关键字  master ,slave ,现在终于在 8.4 版本里面去掉了,使用者需要做如下替换:

master  ---> source
slave   ---> replica

这里要辛苦运维开发同学做版本兼容。凡是涉及 这两个词的状态参数, 命令语句 都要修改。不过 8.4 版本应用到是生产版本还有好多年,习惯命令行的朋友还不用着急修改。

5  SQL_AFTER_GTIDS 兼容 MTA.

以前,当复制启用 并行复制 MTA功能并且用户尝试 SQL_AFTER_GTIDS,"START REPLICA"  会触发警告 ER_MTS_FEATURE_IS_NOT_SUPPORTED,并且复制会被切换到单线程模式。8.4 版本 ,"START REPLICA"  语句的 "SQL_AFTER_GTIDS" 选项兼容 MTA 。

6 组复制 参数相关

group_replication_consistency 系统变量的默认值从EVENTUAL  改为 BEFORE_ON_PRIMARY_FAILOVER

group_replication_exit_state_action 系统变量的默认值改为 OFFLINE_MODE

group_replication_set_as_primary()  函数在选择新主成员时,将等待正在进行的DDL结束。

7 Clone plugin

克隆功能对版本的要求进一步放宽,允许在同一大版本的不同小版本之间进行克隆。换句话说,只有主要版本号和次要版本号必须匹配,而以前点版本号也必须匹配。

例如,克隆功能现在允许将 8.4.0 克隆到 8.4.14 以及将 8.0.51 克隆到 8.0.37。对于 8.0,之前的限制仍然适用于 8.0.37 之前的版本,因此不允许将 8.0.36 等克隆到 8.0.42,反之亦然。(WL#15989)

8 直方图自动更新功能

MySQL 8.4.0 支持自动更新直方图。当为给定的直方图启用此功能时,你可以通过为 ANALYZE TABLE 语句包含 AUTO UPDATE 选项来启用此功能。每当对指定的表运行 ANALYZE TABLE  时,它会被更新。

可以使用 MANUAL UPDATE 选项禁用自动更新某个表的直方图功能。如果没有指定这两个选项中的任何一个,则默认为 MANUAL UPDATE(无自动更新)。

9 Thread pool plugin 连接信息
  1. 增加 连接池相关的表  tp_connections 记录每个连接池的元数据。

  2. tp_thread_state ,tp_thread_group_state 增加了更细粒度的字段显示 连接池的状态。

10  废弃 expire_logs_days

废弃参数 expire_logs_days 并使用 binlog_expire_logs_seconds 代替。

11 过时的复制选项和变量

在 MySQL 早期版本中,一些与MySQL复制相关的选项和变量已被弃用,并且已从MySQL 8.4中移除。现在尝试使用这些选项和变量将导致服务器抛出语法错误。这些选项和变量列举如下:

--slave-rows-search-algorithms:当应用更新或删除操作寻找表行时,复制应用程序使用的算法现在始终是HASH_SCAN,INDEX_SCAN,用户不再能够配置此项。

--log_bin_use_v1_events:这允许运行MySQL 5.7及更新版本的源服务器复制到早期版本的MySQL,这些早期版本的MySQL不再被支持或维护。

--relay-log-info-file--relay-log-info-repository--master-info-file--master-info-repository:使用文件作为sql 应用线程的元数据的方式已被支持 crash-safe 的表所取代。

官方文档

  1. https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/index.html

  2. https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-nutshell.html

这篇关于MySQL 8.4 版本(LTS) 发布,一睹为快的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958369

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ