从参数变化解读 MySQL 8.2.0 发版说明

news2025/9/17 20:23:53

↑ 关注“少安事务所”公众号,欢迎⭐收藏,不错过精彩内容~

日前,MySQL 8.2.0 创新版本已正式上线,并提供安装包下载,但 docker 镜像尚未更新。

在 MySQL 8.1.0 刚发版时也做过分析,欢迎阅读: 重磅!MySQL 8.1.0 已来!

本文将通过 MySQL 启动选项和系统参数的变更情况,来深入了解 8.2.0 都有哪些变化。

启动 MySQL 8.2.0

这一小节不是本文的重点,我们快速推进。

从官网直接下载二进制包,并初始化运行。

  • 初始化日志:
[shawnyan@centos7 ~]$ sudo /usr/local/mysql/bin/mysqld --initialize-insecure
2023-10-26T01:57:36.185664Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2023-10-26T01:57:36.187344Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.2.0) initializing of server in progress as process 119963
2023-10-26T01:57:36.194573Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-10-26T01:57:36.712452Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-10-26T01:57:38.681960Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2023-10-26T01:57:42.299632Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
  • 服务器启动日志:
[mysql@centos7 ~]$ /usr/local/mysql/bin/mysqld
2023-10-26T02:00:07.525736Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2023-10-26T02:00:08.462689Z 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.2.0) starting as process 120743
2023-10-26T02:00:08.473638Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2023-10-26T02:00:09.377582Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2023-10-26T02:00:09.757717Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2023-10-26T02:00:09.757776Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2023-10-26T02:00:09.822331Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock
2023-10-26T02:00:09.822417Z 0 [System] [MY-010931] [Server] /usr/local/mysql/bin/mysqld: ready for connections. Version: '8.2.0'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server - GPL.

2023-10-26T02:00:22.899823Z 8 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

为了便于测试,这里直接将 root 用户密码设为空,并直接运行 mysqld 服务。

  • 登陆 MySQL 并查看版本信息:
alt

删除的参数 (3)

1. abort-slave-event-count

The deprecated server startup options --abort-slave-event-count and --disconnect-slave-event-count, deprecated in MySQL 8.0, have been removed in this release. Attempting to start mysqld with either of these options now results in an error.

abort_slave_event_count / disconnect_slave_event_count 这两个启动参数在之前的版本中用做测试,并非真的生产环境参数。

从 8.0.29 版本开始,被标记为废弃状态,从 8.2.0 开始,正式被移除。

2. disconnect-slave-event-count

同上。

3. expire-logs-days

expire_logs_days 参数用于设定二进制日志保留天数,从 8.2.0 开始,正式被移除。

从 MySQL 8.0.1 开始,新增参数 binlog_expire_logs_seconds,以秒为单位控制二进制日志的保留时长。

默认值为 2592000 ,即 30 天。最大值为 4294967295 ,即 unsigned int 最大值,约 138 年。

在 MariaDB 中,从 10.6.1 开始引入 binlog_expire_logs_seconds 参数,但默认值为 0 ,需要自己进行设定。

变更值的参数 (6)

1. master-retry-count

master_retry_count 参数用于设定复制连接超时后,重试连接的最大次数。 在 8.2.0 默认值为 10 ,而 8.0.35 的默认值为 86400 ,这一变更是从 8.1.0 开始的。

需要注意的是,创建复制的语法 change master to 已经废弃,改为 change replication source to

2. optimizer-switch (hash_set_operations=on)

从 8.2.0 开始, optimizer_switch 中新增了一个控制标记 hash_set_operations,默认值为 on

用于对集合操作(包括 EXCEPT 和 INTERSECT)进行哈希表优化,这种优化用于哈希的内存量可以使用 set_operations_buffer_size 系统变量来控制。

系统变量 set_operations_buffer_size 是 MySQL 8.2.0 新引入的,下面会再介绍。

3. performance-schema-error-size

performance_schema_error_size 表示数据库错误码的数量,在 MySQL 8.0.35 中,默认值为 5307 ,而在 MySQL 8.2.0 中,变更为 5377 。

mysql> SELECT version(),count(*) FROM performance_schema.events_errors_summary_global_by_error;
+-----------+----------+
| version() | count(*) |
+-----------+----------+
| 8.2.0     |     5377 |
+-----------+----------+
1 row in set (0.00 sec)

源码中的定义如下:

static Sys_var_long Sys_pfs_error_size(
    "performance_schema_error_size""Number of server errors instrumented.",
    READ_ONLY GLOBAL_VAR(pfs_param.m_error_sizing), CMD_LINE(REQUIRED_ARG),
    VALID_RANGE(01024 * 1024), DEFAULT(PFS_MAX_GLOBAL_SERVER_ERRORS),
    BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES)
;

4. performance-schema-max-memory-classes

performance_schema_max_memory_classes 是全局只读参数,表示 memory instruments 的最大数量。

在 MySQL 8.0.35 中,默认值为 450 ,但在 MySQL 8.2.0 中变为 470 ,不过官方文档尚未更新。

已在 MySQL Bugs 网站提交相关 bug:

https://bugs.mysql.com/bug.php?id=112839

5. performance-schema-max-rwlock-classes

performance_schema_max_rwlock_classes 是全局只读参数,表示 rwlock instruments 的最大数量。

在 MySQL 8.0.35 中,默认值为 60 ,但在 MySQL 8.2.0 中变为 100 。

6. performance-schema-max-statement-classes

performance_schema_max_statement_classes 是全局只读参数,表示 statement instruments 的最大数量。

默认值是在服务器构建时根据客户机/服务器协议中的命令数量和服务器支持的SQL语句类型数量计算的。

在 MySQL 8.0.35 中,默认值为 219 ,而在 MySQL 8.2.0 中变为 220 。

那么,多的1个是从哪来的呢?

从相关代码提交记录可以看到描述:

https://github.com/mysql/mysql-server/commit/eb7dd6c6c10c0437658caa7b9c7716c0468582fa WL#15426: Implement SHOW PARSE_TREE

Implemented a SHOW PARSE_TREE statement in debug builds to display the JSON-formatted parse tree for a SELECT statement. This statement is not supported in release builds, and is available only in debug builds, or by compiling the server using -DWITH_SHOW_PARSE_TREE. (WL #15426)

从 MySQL 8.1.0 开始,引入新 SQL 语句, show parse_tree 用来调试 select 语句,并以 json 格式展示。 需要注意的是,该参数只能用于 Debug 模式,所以官方下载的正式安装包是无法使用该语法的,否则会报语法错误。

mysql> SHOW PARSE_TREE select 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PARSE_TREE select 1' at line 1

新增的参数 (7)

1. mysql-native-password

MySQL 中创建用户时默认的密码插件已经变更为 caching_sha2_password,但目前仍然支持使用 mysql_native_password,该参数就是控制服务器启动时,是否启用该密码插件。

在 8.1.0 的发版说明中有如下一段描述:

https://dev.mysql.com/doc/relnotes/mysql/8.1/en/news-8-1-0.html

The mysql_native_password authentication plugin now is deprecated and subject to removal in a future version of MySQL. CREATE USER, ALTER USER, and SET PASSWORD operations now insert a deprecation warning into the server error log if an account attempts to authenticate using mysql_native_password as an authentication method. (Bug #35336317)

具体演示如下:

mysql> create user shawnyan identified with mysql_native_password by '1';
Query OK, 0 rows affected (0.00 sec)

日志中会提示该插件已弃用,请用 caching_sha2_password 代替。

2023-10-26T09:04:32.364529Z 12 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release. Please use caching_sha2_password instead'

2. ndb-mgm-tls

启动选项 ndb-mgm-tls/ndb-tls-search-path 是 MySQL 8.2.0 新引入的,为 NDB 引擎增加 TLS 相关选项。

但由于文档中暂无相关参数描述,而且官网公开的 worklog 不再更新,所以无法查阅到具体的功能描述,仅能通过社区版的代码提交记录窥视一二。

WL#15524 post-push fixes (2nd set)
WL#15524 post-push fixes
WL#15524 Patch #17 Run more existing MTR tests with TLS
WL#15524 Patch #16 Use TLS for Event Listener
WL#15524 Patch #15 Visbility
WL#15524 Patch #14 Add MGM TLS support to all remaining tools
WL#15524 patch #13 ndb_waiter and new MTR tests
WL#15524 Patch #12 MGM TLS in API Nodes, mysqld, and Cluster/J
WL#15524 Patch #11 Use MGM TLS in TransporterRegistry and MgmtSrvr
WL#15524 Patches #9 and #10: --ndb-mgm-tls in ndbd and ndb_mgmd
WL#15524 Patch #8 TLS options in ndb_mgm
WL#15524 Patch #7 Add --ndb-mgm-tls option to ndb_sign_keys
WL#15524 Patch #6 Command authorization in MGM client
WL#15524 Patch #5 Command authorization in MGM server
WL#15524 Patch #4 MGM TLS Configuration
WL#15524 Patch #3 Use TLS for upgraded transporter
WL#15524 Patch #2 TLS-safe upgrade of mgm socket to transporter
WL#15524 Patch #1 "START TLS" for management API

以及,从源码中,可以看到这个选项提供了三个选项值,分别是 relaxed,strict,deferred,默认值为 relaxed

/* ndb_mgm uses an extended form of the --ndb-mgm-tls enum, which accepts
   an extra option, "disabled"
*/

static const char * tls_names[] = { "relaxed""strict""deferred"nullptr };

3. ndb-tls-search-path

用于存放 NDB 集群 TLS 私钥的目录。 具体内容,同上。

4. performance-schema-max-meter-classes

performance_schema_max_meter_classes 是全局只读系统变量,从 MySQL 8.2.0 开始引入,表示 meter instruments 可被创建的最大数量。

5. performance-schema-max-metric-classes

performance_schema_max_metric_classes 是全局只读系统变量,从 MySQL 8.2.0 开始引入,表示 metric instruments 可被创建的最大数量。

performance_schema_max_meter_classes / performance_schema_max_metric_classes 这两个变量是一个 worklog 里增加的,用于服务器的遥测指标接口。

另外,命令很相似,一个是 meter,另一个是 metric,需要注意区分。

6. set-operations-buffer-size

set_operations_buffer_size 可以动态调整,默认值为 256K,最大可以调整到 1GB,从 MySQL 8.2.0 开始引入。

在上面的 optimizer-switch (hash_set_operations=on) 部分已经介绍过。

相关文档参见:

https://dev.mysql.com/doc/refman/8.2/en/server-system-variables.html#sysvar_set_operations_buffer_size

7. tls-certificates-enforced-validation

tls_certificates_enforced_validation 表示在数据库启动时,强制校验 SSL 证书是否有效,如果设定为 TRUE ,那么数据库在发现无效证书时将停止启动,其默认值为 OFF

总结

MySQL 8.2.0 启动选项和系统变量的变化多达 16 项,还有很多系统状态变量文本没有列举。

alt

MySQL 8.2.0 是 MySQL 变更发版模型后的第二个版本,是创新版本 (Innovation Release),不建议部署到生产环境。

更多精彩

[MySQL]

  • 再见 mysql_upgrade
  • MySQL 8.1.0 已来!
  • 从鸟山明到 MySQL 5.7 EOL
  • MySQL Server 8.3.0 重要变更解析
  • MySQL 数据库认证考试介绍(2024 版)
  • 如何选择适合的 MySQL Connector/J 版本
  • MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)
  • MySQL 8.4.0 LTS 变更解析:InnoDB 参数默认值变化
  • MySQL 8.4.0 LTS 变更解析:MySQL 的复制与组复制
  • MySQL 8.4.0 LTS 变更解析:I_S 表、权限、关键字和客户端
  • MySQL 8.4.0 LTS 变更解析:源码编译(类库变更)和密码插件

[Oracle]

  • Oracle 数据库全面升级为 23ai
  • python-oracledb 已率先支持 Oracle 23ai
  • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • SOP for Oracle 23ai:Python 连接 Oracle 的两种方法

-- / END / --

foot.png

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云部署最简单python web

最近在玩云主机,考虑将简单的web应用装上去,通过广域网访问一下,代码很简单,所以新手几乎不会碰到什么问题。 from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return Hello, World!app.route(/gree…

html通过数据改变,图片跟着改变

改变前 改变后 通过数据来控制样式展示 <template><div>通过num控制图标是否更改{{num}}<div class"box"><!-- 如果num大于1则是另一种&#xff0c;样式&#xff0c;如果小时1&#xff0c;则是另一种样式 --><div class"item&qu…

字节面试:百亿级数据存储,怎么设计?只是分库分表吗?

尼恩&#xff1a;百亿级数据存储架构起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#xff0c…

WGCLOUD可以使用短信告警通知吗

支持的 以下是官网的说明 告警报警配置说明 - WGCLOUD

2024.5.25晚训题解

这套题挺简单的。。。 A题 AC率差不多100% B题 AC率差不多75% C题 AC率也差不多75% D题 AC率 50% E题 AC率 25% 向着top 1%出发 A题题解 Stair, Peak, or Neither? 简单判断题&#xff0c;自己写 #include<bits/stdc.h> using namespace std; int A[5]; int main() {…

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台&#xff0c;我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型&#xff08;LLM&#xff09;、智能体&#xff08;Agent&#xff09;、知识库、向量数据库、知识图谱&#xff0c;RAG&#xff0c;AGI 的不同形态愈发显现&#xff0c;如何…

HarmonyOS鸿蒙应用开发——ArkTS的“内置组件 + 样式 + 循环和条件渲染”

一、内置组件是咩&#xff1f; 学过前端的都知道&#xff0c;一个组件就是由多个组件组成的&#xff0c;一个组件也可以是多个小组件组成的&#xff0c;组件就是一些什么导航栏、底部、按钮......啥的&#xff0c;但是组件分为【自定义组件】跟【内置组件】 【自定义组件】就…

微信小程序毕业设计-智慧旅游平台系统项目开发实战(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

【Python】【Scrapy 爬虫】理解HTML和XPath

为了从网页中抽取信息&#xff0c;必须对其结构有更多了解。我们快速浏览HTML、HTML的树状表示&#xff0c;以及在网页上选取信息的一种方式XPath。 HTML、DOM树表示以及XPath 互联网是如何工作的&#xff1f; 当两台电脑需要通信的时候&#xff0c;你必须要连接他们&#xff…

【数据结构与算法篇】二叉树链式结构及实现

【数据结构与算法篇】二叉树链式结构及实现 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 4. 二叉树链式结构的实现 4.1 前置说明 4.2 二叉树的遍历 4.2.1 前序、中序以及…

材料物理 笔记-9

原内容请参考哈尔滨工业大学何飞教授&#xff1a;https://www.bilibili.com/video/BV18b4y1Y7wd/?p12&spm_id_frompageDriver&vd_source61654d4a6e8d7941436149dd99026962 或《材料物理性能及其在材料研究中的应用》&#xff08;哈尔滨工业大学出版社&#xff09; ——…

C++:List的使用和模拟实现

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一 list的介绍及使用 1.1 list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers …

【算法】前缀和算法——和为k的子数组之和

题解&#xff1a;和为k的子数组之和(前缀和算法) 目录 1.题目2.题解思路2.1前缀和 哈希表&#xff0c;算法步骤&#xff1a;2.2细节如下&#xff1a;2.3参考代码&#xff1a; 3.总结及思考 1.题目 题目链接&#xff1a;LINK 2.题解思路 暴力求解自然不用多说&#xff0c;时…

七大经典排序算法——冒泡排序

文章目录 &#x1f4d1;冒泡排序介绍&#x1f324;️代码实现&#x1f324;️做个简单的优化&#x1f324;️复杂度和稳定性分析☁️结语 &#x1f4d1;冒泡排序介绍 冒泡排序是一种简单但效率较低的排序算法。它重复地比较相邻的两个元素&#xff0c;如果顺序不对则交换它们&…

刷题之路径总和Ⅲ(leetcode)

路径总和Ⅲ 这题和和《为K的数组》思路一致&#xff0c;也是用前缀表。 代码调试过&#xff0c;所以还加一部分用前序遍历数组和中序遍历数组构造二叉树的代码。 #include<vector> #include<unordered_map> #include<iostream> using namespace std; //Def…

著名书法家王杰宝做客央视频《笔墨写人生》艺坛人物经典访谈节目

印象网北京讯&#xff08;张春兄、冯爱云&#xff09;展示艺术风采&#xff0c;构建时代精神。5月25日&#xff0c;著名书法家、羲之文化传承人王杰宝&#xff0c;做客央视频《笔墨写人生》艺坛人物经典访谈节目&#xff0c;与中央电视台纪录频道主持人姚文倩一起&#xff0c;分…

web前端框架设计第十课-组件

web前端框架设计第十课-组件 一.预习笔记 组件&#xff1a;Vue最强大的功能之一 1.局部组件注册 注意事项&#xff1a;template标签中只能有一个根元素 2.全局组件的注册 注意事项&#xff1a;组件名的大小写需要注意&#xff08;实践&#xff09; 3.案例&#xff08;查询框…

解决 Failed to parse remote port from server output【Remote-SSH】【VSCode】

描述 一早起来&#xff0c;发现remote-ssh无法进入服务器容器&#xff0c;本地使用git bash进行ssh可正常连接服务器&#xff0c;基本确定是vscode工具本身的问题。重装本地用户的.vscode相关目录清空&#xff0c;vscode重装均无果&#xff0c;不建议尝试。弹窗信息为Could no…

SpringBoot高级原理详解

文章目录 1 SpringBoot自动化配置原理01-SpringBoot2高级-starter依赖管理机制02-SpringBoot2高级-自动化配置初体验03-SpringBoot2高级-底层原理-Configuration配置注解04-SpringBoot2高级-底层原理-Import注解使用105-SpringBoot2高级-底层原理-Import注解使用206-SpringBoot…

【ARM 裸机】按键输入

本节学习按键输入&#xff0c;先拷贝上一节工程文件&#xff0c; 1、驱动编写 新建 key 的 .h 和 .c 文件&#xff1b; 再查看一下硬件原理图如下&#xff1b; 由此可知&#xff0c;KEY0 按键接在 UART1_CTS 引脚上&#xff0c;默认情况下为高电平&#xff0c;按键按下为…