MySQL 8.2有那些功能变更呢,一起来看看吧(译)

2023年 12月 15日 62.9k 0

MySQL 8.2中新增的功能如下:
本节概述了在MySQL 8.2中新增、废弃和删除的内容。一个相关的部分列出了在MySQL 8.2中新增、废弃或删除的MySQL服务器选项和变量。
包含以下三个部分:
MySQL 8.2中新增的功能
MySQL 8.2中废弃的功能
MySQL 8.2中删除的功能

MySQL 8.2中新增的功能
以下功能已添加到MySQL 8.2中:
• 服务器启动和关闭消息的新增。根据以下列表,在服务器启动和关闭过程中添加了以下类型的消息:
•在使用--initialize或--initialize-insecure启动服务器时,添加了用于服务器初始化的启动和结束消息;这些消息是在正常服务器启动和关闭过程中显示的消息之外的独立消息。
• InnoDB初始化的启动和结束消息。
• 服务器初始化期间执行init文件的启动和结束消息。
• 服务器初始化期间执行编译的语句的启动和结束消息。
• 服务器启动期间(如果发生崩溃恢复)的崩溃恢复的启动和结束消息。
• 服务器启动期间动态插件初始化的启动和结束消息。
• 服务器启动期间组件初始化步骤的启动和结束消息(在服务器启动期间显现)。
• 服务器关闭期间副本线程的关闭消息,以及连接线程的正常和强制关闭的消息。
• 服务器关闭期间插件和组件的关闭的启动和结束消息。
• 在初始化或服务器关闭期间的关闭消息中包含退出代码(返回值)信息。
此外,如果使用WITH_SYSTEMD构建服务器,服务器现在在错误日志中包含每个systemd消息。
• 针对集合操作的哈希表优化。MySQL 8.2通过一种新的哈希表优化改进了使用EXCEPT和INTERSECT集合操作的语句的性能。对于此类语句,该优化会自动启用,并通过设置hash_set_operations优化器开关进行控制;如果要禁用此优化并使优化器使用MySQL先前版本中的旧临时表优化,请将此标志设置为off。
可以通过设置set_operations_buffer_size服务器系统变量的值来控制为此优化分配的内存量;增加缓冲区大小可以进一步提高使用这些操作的某些语句的执行时间。
• MySQL Enterprise Audit。添加了audit_log_filter_uninstall.sql脚本,以简化移除MySQL Enterprise Audit的过程。
•可插拔身份验证。新增对使用智能卡、安全密钥和生物识别读卡器等设备进行身份验证的支持,用于WebAuthn环境中的MySQL服务器。新的WebAuthn身份验证方法基于FIDO和FIDO2标准。它使用一对插件,服务器端为authentication_webauthn,客户端端为authentication_webauthn_client。服务器端的WebAuthn身份验证插件仅包含在MySQL Enterprise Edition发行版中。

• MySQL Enterprise Firewall。新增以下增强功能:
• MySQL Enterprise Firewall现在允许定期重新加载其内存缓存,以使用存储在防火墙表中的数据。mysql_firewall_reload_interval_seconds系统变量设置了运行时使用的定期重新加载计划,或者默认情况下禁用重新加载。先前的实现仅在服务器启动时或重新安装服务器端插件时重新加载缓存。
• 添加了mysql_firewall_database服务器系统变量,用于启用在自定义模式中存储内部表、函数和存储过程。
• 添加了uninstall_firewall.sql脚本,以简化卸载已安装的防火墙的过程。
• MySQL Privileges。新增SET_ANY_DEFINER权限用于定义者对象创建以及ALLOW_NONEXISTENT_DEFINER权限用于孤立对象保护。这些权限与已弃用的SET_USER_ID权限共存。
• EXPLAIN FOR SCHEMA。在EXPLAIN语句中添加了FOR SCHEMA选项。语法如下所示,其中stmt是可解释的语句:
EXPLAIN [options] FOR SCHEMA schema_name stmt
这将导致stmt在指定的模式中运行。
FOR DATABASE也作为其同义词得到支持。
此选项与FOR CONNECTION不兼容。
有关更多信息,请参阅获取执行计划信息。
• mysql_native_password。先前已弃用的mysql_native_password插件现在不再是强制性的,并且可以在服务器启动时禁用。如果禁用了服务器端的mysql_native_password身份验证方法,使用客户端插件的旧客户端帐户(MySQL 5.5之前和可能是MySQL 5.6)将无法连接,服务器会将“Access denied”消息写入错误日志。这些连接不再可能,因为虽然协议保持兼容,但客户端支持的身份验证方法已丢失。

• 复制:SQL_AFTER_GTIDS和MTA。START REPLICA语句选项SQL_AFTER_GTIDS现在与多线程应用程序兼容。(先前,当启用MTA并尝试使用此选项时,该语句会引发警告ER_MTS_FEATURE_IS_NOT_SUPPORTED,并且复制将切换到单线程模式。)这意味着需要追赶丢失的事务的复制现在可以在不失去多线程性能优势的情况下进行。
• 复制术语的向后兼容性。此版本为mysqldump添加了--output-as-version选项。此选项允许您从与旧版本MySQL兼容的MySQL 8.2服务器创建转储;其值(在此处列出的值之一)确定转储中使用的复制术语的兼容性。
• SERVER:获取服务器版本并使用与该MySQL版本兼容的最新复制语句和变量名称。
• BEFORE_8_2_0:输出与运行8.0.23至8.1.0(包括)版本的MySQL服务器兼容。
• BEFORE_8_0_23:输出与8.0.23之前版本的MySQL服务器兼容。
有关此选项的更多信息,请参阅该选项的描述。
此外,对于terminology_use_previous系统变量,添加了一个新值。BEFORE_8_2_0使服务器在SHOW CREATE EVENT的输出中打印DISABLE ON SLAVE(现已弃用),而不是DISABLE ON REPLICA。现有的值BEFORE_8_0_26除了之前的效果外,现在也具有此效果。

MySQL 8.2中废弃的功能
以下功能在MySQL 8.2中已被弃用,并可能在未来的系列中被移除。如果有替代方案,应用程序应更新以使用这些替代方案。

对于在MySQL 8.2中被弃用并在较高的MySQL系列中被移除的功能,从MySQL 8.2源复制到较高系列的复制品时,语句可能会失败,或者在源和复制上可能具有不同的效果。为避免这些问题,使用在8.2中被弃用的功能的应用程序应进行修订,避免使用它们,并在可能时使用替代方案。

• 数据库授权中的通配符字符。在MySQL 8.2.0及更高版本的MySQL Innovation发布中,已弃用在数据库授权中使用%和_作为通配符的功能。您应该期望通配符功能在将来的MySQL版本中被移除,并且这些字符始终被视为文字,就像partial_revokes服务器系统变量的值为ON时一样。

此外,当检查权限时,服务器将%视为localhost的同义词的处理方式也已在MySQL 8.2.0中被弃用,并可能在将来的MySQL版本中被移除。

• old和new(服务器系统变量)。在MySQL 8.2.0及更高版本的Innovation发布中,已弃用old和new服务器系统变量及相关服务器选项,并且每当设置或读取这些变量时都会发出警告。由于这些变量将在将来的MySQL版本中被移除,依赖于它们的应用程序应尽快开始迁移。
• --character-set-client-handshake选项。--character-set-client-handshake服务器选项最初用于与非常旧版本的MySQL升级使用,现在在MySQL 8.2.0及更高版本的MySQL Innovation发布中已被弃用,每当使用它时都会发出警告。您应该期望该选项在将来的MySQL版本中被移除;依赖于该选项的应用程序应尽快开始迁移。

• binlog_transaction_dependency_tracking。binlog_transaction_dependency_tracking服务器系统变量在MySQL 8.2.0及更高版本的Innovation发布中已被弃用,并可能在将来的MySQL版本中被移除。引用该变量或等效的mysqld启动选项--binlog-transaction-dependency-tracking现在会触发警告。目前没有计划替换该变量或其功能,预计将来会将其变为服务器内部功能。

• 复制SQL。MySQL 8.2在之前的版本中开始更新与MySQL复制相关的SQL语句中使用的术语。此版本弃用了以下语句,并列出了它们的替代语句:
• RESET MASTER:使用RESET BINARY LOGS AND GTIDS代替。
• SHOW MASTER STATUS:使用SHOW BINARY LOG STATUS代替。
• SHOW MASTER LOGS:使用SHOW BINARY LOGS代替。
• PURGE MASTER LOGS:使用PURGE BINARY LOGS代替。
作为这项工作的一部分,CREATE EVENT和ALTER EVENT的DISABLE ON SLAVE选项现已被弃用,并被DISABLE ON REPLICA取代。相应的术语SLAVESIDE_DISABLED也已被弃用,并且不再在事件描述中使用,例如在Information Schema EVENTS表中,现在显示的是REPLICA_SIDE_DISABLED。

此外,Com_show_master_status系统状态变量已更名为Com_show_binary_log_status。以前的名称仍然支持向后兼容,但已被弃用,并可能在将来的MySQL版本中被移除。

• SET_USER_ID权限。SET_USER_ID权限已被弃用,并可能在将来的MySQL版本中被移除。当使用GRANT授予SET_USER_ID权限时,会收到SQL警告,告知您该权限的弃用状态。现在,它被以下新权限取代:
• SET_ANY_DEFINER用于定义者对象创建。
• ALLOW_NONEXISTENT_DEFINER用于孤立对象保护。
使用CREATE PROCEDURE、CREATE FUNCTION、CREATE TRIGGER、CREATE EVENT或CREATE VIEW创建孤立的SQL对象时,需要同时具备这两个权限。

MySQL 8.2中删除的功能
以下项目已在MySQL 8.2中被废弃并移除。如果有替代方案,请更新应用程序以使用替代方案。

对于在MySQL 8.2中移除的功能,从MySQL 8.1源复制到MySQL 8.2副本时,语句可能会失败,或者在源和副本上产生不同的效果。为避免此类问题,应对使用在MySQL 8.2中移除的功能的应用程序进行修改,尽可能避免使用这些功能,并使用替代方案。

• WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()函数。WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS() SQL函数在MySQL 8.0中已被弃用,并在MySQL 8.2中不再支持。尝试调用此函数将导致语法错误。建议使用WAIT_FOR_EXECUTED_GTID_SET()代替WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(),它允许您等待特定的GTIDS。无论复制通道或指定事务通过哪个用户客户端到达服务器,都可以使用该函数。

• expire_logs_days系统变量。在MySQL 8.0中被弃用的expire_logs_days服务器系统变量已被移除。尝试在运行时获取或设置此变量,或使用等效选项(--expire-logs-days)启动mysqld,将导致错误。可以使用binlog_expire_logs_seconds替代expire_logs_days,它允许您指定除了(仅限)整数天数之外的过期时间段。

• --abort-slave-event-count和--disconnect-slave-event-count服务器选项。MySQL服务器启动选项--abort-slave-event-count和--disconnect-slave-event-count曾在MySQL 8.0中被弃用,并在此版本中被移除。尝试使用这两个选项启动mysqld将导致错误。

翻译链接:https://dev.mysql.com/doc/refman/8.2/en/mysql-nutshell.html

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论