[转帖][MySQL 8.2.0] 从参数变化解读 MySQL 8.2.0 发版说明
https://www.mryunwei.com/482476.html
日前,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 并查看版本信息:
删除的参数 (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(0, 1024 * 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 项,还有很多系统状态变量文本没有列举。
MySQL 8.2.0 是 MySQL 变更发版模型后的第二个版本,是创新版本 (Innovation Release),不建议部署到生产环境。
本文来自网络,不代表每日运维立场,如若转载,请注明出处:https://www.mryunwei.com/482476.html
题图来自Unsplash,基于CC0协议
内容观点仅代表作者本人,每日运维平台仅提供信息存储空间服务。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
[转帖][MySQL 8.2.0] 从参数变化解读 MySQL 8.2.0 发版说明的更多相关文章
- MySql 参数赋值bug (MySql.Data, Version=6.9.6.0 沙雕玩意)
直接将参数赋值为常量0则参数值为null,出现异常:MySql.Data.MySqlClient.MySqlException (0x80004005): Column 'PayType' canno ...
- MySQL服务 - MySQL程序的配置文件、参数、变量查看
查看配置文件及读取顺序 MySQL的配置文件以.cnf结尾,可能会有多个,而不同版本的MySQL程序的读取配置文件的路径也都不同,要想获取MySQL读取配置文件的顺序可以通过以下指令查看: shell ...
- Hadoop2.6.0配置参数查看小工具
前言 使用Hadoop进行离线分析或者数据挖掘的工程师,经常会需要对Hadoop集群或者mapreduce作业进行性能调优.也许你知道通过浏览器访问http://master:18088/conf来查 ...
- MySQL数据库my.cnf性能参数如何调优
提供一个MySQL 5.6版本适合在1GB内存VPS上的my.cnf配置文件.配置文件可以到这里下载:: 下载my.cnf [client] port = 3306 socket = /tmp/mys ...
- mysql性能优化学习笔记-参数介绍及优化建议
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...
- mysql JDBC URL格式各个参数详解
mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:port].../[database][?参数名1][=参数值1][&参数名2][=参数值 ...
- replicate-do-db参数引起的MySQL复制错误及处理办法
replicate-do-db配置在MySQL从库的my.cnf文件中,可以指定只复制哪个库的数据.但是这个参数有个问题就是主库如果在其他的schema环境下操作,其binlog不会被从库应用,从而出 ...
- Mysql性能优化之缓存参数优化
数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所以,要优化 ...
- MySQL DBA教程:Mysql性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感 ...
- Swift3.0服务端开发(四) MySQL数据库的连接与操作
本篇博客我们来聊聊MySQL数据库的连接与操作.如果你本地没有MySQL数据库的话,需要你先安装MySQL数据库.在Mac OS中使用brew包管理器进行MySQL的安装是及其方便的.安装MySQL的 ...
随机推荐
- 谷歌浏览器输入地址后http自动转https解决方法
谷歌浏览器输入地址后http自动转https解决方法 https://blog.csdn.net/qq_51563725/article/details/133691727
- Python——第一章:占位——pass
pass: 常用于代码占位 a = 10 if a > 100: pass 当设计代码时,有些条件或代码还没有想好要如何处理,先用pass做占位,后续可以回来继续写.如果不写pass则会报错,因 ...
- 用Roslyn玩转代码之一: 解析与执行字符串表达式
最近框架中的可视化界面设计需要使用到表达式引擎(解析代码字符串并动态执行),之前旧框架的实现是将表达式字符串解析为语法树后解释执行该表达式,本文介绍如何使用Roslyn解析表达式字符串,并直接转换 ...
- electron入门之试调工具remote(三)
electron入门到入土,从渲染线程中创建新窗口.2022-03-21入门版本17.1.2 electron重要概念,只有一个主线程,其他都是渲染进程或者叫子线程,他们不能直接相互操作,可以通过ip ...
- 窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理
本文分享自华为云社区<窗口到底有多滑动?揭秘TCP/IP滑动窗口的工作原理>,作者: Lion Long. 当涉及网络性能优化和数据传输可靠性时,TCP/IP滑动窗口是一个关键的技术.本文 ...
- 为什么MySQL单表不能超过2000万行?
摘要:MySQL一张表最多能存多少数据? 本文分享自华为云社区<为什么MySQL单表不能超过2000万行?>,作者: GaussDB 数据库 . 最近看到一篇<我说MySQL每张表最 ...
- 对象存储只能按文件名搜索,你out了吧
摘要:不少大公司的一个桶里都是几亿几十亿的对象,那他们都是怎么检索的呢? 本文分享自华为云社区<对象存储只能按文件名搜索? 用 DWR + ElasticSearch 实现文件名.文件内容.图片 ...
- 云图说|云上应用监控神器——应用性能监控APM2.0
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 应用性能管理服务 ...
- 大力出奇迹,揭秘昇腾CANN的AI超能力
摘要:CANN(Compute Architecture for Neural Networks)异构计算架构,是以提升用户开发效率和释放昇腾AI处理器极致算力为目标,专门面向AI场景的异构计算架构. ...
- 字节跳动基于DataLeap的DataOps实践
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 本文根据 ArchSummit 全球架构师峰会(深圳站)来自抖音数据研发负责人王洋的现场分享实录整理而成(有删减) ...