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

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

日前,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.mzph.cn/news/840853.shtml

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

相关文章

区块链技术和应用

文章目录 前言 一、区块链是什么? 二、区块链核心数据结构 2.1 交易 2.2 区块 三、交易 3.1 交易的生命周期 3.2 节点类型 3.3 分布式系统 3.4 节点数据库 3.5 智能合约 3.6 多个记账节点-去中心化 3.7 双花问题 3.8 共识算法 3.8.1 POW工作量证明 总结 前言 学习长…

Drone+Gitee自动执行构建、测试和发布工作流

拉取Drone:(至于版本,你可以下载最新的) sudo docker pull drone/drone:2 拉取runner: sudo docker pull drone/drone-runner-docker 在Gitee中添加第三方应用: 进入个人主页,点击设置: 往下翻,找到数…

前缀和,差分算法理解

前缀和是什么: 前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度 说个人话就是比如有一个数组: …

H3CNE-6-ICMP数据包分析

ICMP:Internet Control Message Protocol ICMP用来传递差错、控制、查询等信息 Wireshark抓包 Wireshark下载国内镜像 ICMP数据包格式 Type:表示ICMP消息类型 Code:表示同一消息类型中的不同信息 ICMP消息类型和编码类型 ICMP应用 &…

亚马逊开店详细教程(6)- 获得商品的评分

1. 为什么要参加 VINE计划 用户在浏览一个新上架的商品时,通常会参照以往买家的对商品的评论,如果你是新全的商品可能没有任何评论信息,这可以会让一部分用户对购买产品有所顾虑,参加亚马逊Vine计划能够帮助新产品快速获得高质量…

2024年山东省安全员C证证考试题库及山东省安全员C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年山东省安全员C证证考试题库及山东省安全员C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试大…

【Spring MVC】_SpringMVC项目返回数据

目录 1. 注解使用示例 1.1 使用Controller注解 1.2 使用RestController注解 1.3 使用Controller与ResponseBody注解 2. 关于ResponseBody注解 前文已经介绍过使用Controller注解向前端返回一个HTML页面,接下来将介绍向前端返回数据。 关于Controller和RestCon…

Volatile的内存语义

1、volatile的特性 可见性:对一个volatile变量的读,总能够看到任意一个线程对这个volatile变量的写入。 原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile这种复合操作不具有原子性。 接下来我们用程序验证。…

独享IP是原生IP吗?

原生IP: 原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中…

设置height:100%不生效的原因

之前网课案例总是不屑于去看,因为总觉得太花时间,但是不可否认的是,认真去看还是会有收获的,而且常有意外收获 昨天在看实现动画效果的综合案例中,意外解决了我长久以来的一个疑问:为什么给元素设置height…

java在类的定义中创建自己的对象?

当在main方法中新建自身所在类的对象,并调用main方法时,会不断循环调用main方法,直到栈溢出 package com.keywordStudy;public class mainTest {static int value 33;public static void main(String[] args) throws Exception{String[] sn…

面了字节大模型算法岗,太难了。。。

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 汇总合集…

ClickHouse实战处理(一):MergeTree表引擎

MergeTree作为家族系列最基础的表引擎,主要有以下特点: 存储的数据按照主键排序:创建稀疏索引加快数据查询速度。支持数据分区,可以通过PARTITION BY语句指定分区字段。支持数据副本。支持数据采样。 一、MergeTree分类和建表参…

[emailprotected](2)核心概念-JSX

目录 1,什么是 jsx2,空标签3,通过大括号使用 js4,防止注入攻击5,元素的不可变性 官方文档 1,什么是 jsx Facebook 起草的 js 扩展语法。本质上是 js 对象,会被 babel 编译,最终转换…

军队仓库管理系统|DW-S301系统特点

部队仓库管理系统DW-S301系统通过数据采集、互联网和物联网技术,实现数字化智能管控,以提高军用物资的仓储准确率和流转率,缩短周转时间,降低库存成本,也有助于消除生产过程中的不确定性。 系统功能:通过部…

web学习笔记(五十六)

目录 1.绑定类名和style 1.1 绑定类名 1.1.1 绑定单个类名 1.1.2 绑定多个类名 1.2 style相关知识 2. vue的响应式原理 3. v-once 4.本地搭建Vue单页应用 4.1 安装Vue脚手架 4.2 安装对应的包文件 4.3 运行项目 1.绑定类名和style 1.1 绑定类名 1.1.1 绑定单个类名…

计算机网络协议

网络协议 基于TCP的应用层协议 POP3(Post Office Protocol 3): 用于支持客户端远程管理服务器上的电子邮件。它支持**“离线”邮件处理**,即邮件发送到服务器上后,一旦邮件被POP3客户端下载到本地计算机,…

NL6621 实现获取天气情况

一、主要完成的工作 1、建立TASK INT32 main(VOID) {/* system Init */SystemInit();OSTaskCreate(TestAppMain, NULL, &sAppStartTaskStack[NST_APP_START_TASK_STK_SIZE -1], NST_APP_TASK_START_PRIO); OSStart();return 1; } 2、application test task VOID TestAp…

网页上的超链接复制到Excel中+提取出网址+如何保存

定义 超链接网页标题地址栏 使用的工具 2024年的WPS是不行的, 如果把知乎网页上的超链接复制到WPS中的Excel中,就会丢掉地址,只剩下网页标题 具体操作(转载,在Excel2013上验证可行) [1]启用【开发工具】&#xff…

Golang net/http标准库常用方法(三)

大家好,针对Go语言 net/http 标准库,将梳理的相关知识点分享给大家~~ 围绕 net/http 标准库相关知识点还有许多章节,请大家多多关注。 文章中代码案例只有关键片段,完整代码请查看github仓库:https://github.com/hltfa…