Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.35 的变化(2021-07-20,正式发布)

MySQL 5.7.35 的变化(2021-07-20,正式发布)

审核日志说明

  • 对于 MySQL Enterprise Audit,新的 audit_log_format_unix_timestamp 系统变量允许time 在每个审计记录中包含一个字段。字段值是一个整数,表示 UNIX 时间戳值,指示生成审计事件的日期和时间。该time 字段仅支持 JSON 格式的日志文件。

弃用和移除说明

  • TLSv1 和 TLSv1.1 连接协议现在已弃用,对它们的支持可能会在未来的 MySQL 版本中删除。(有关背景信息,请参阅 IETF 备忘录 弃用 TLSv1.0 和 TLSv1.1。)建议使用更安全的 TLSv1.2 和 TLSv1.3 协议建立连接。TLSv1.3 要求 MySQL 服务器和客户端应用程序都使用 OpenSSL 1.1.1 或更高版本进行编译。

    在服务器端,此弃用具有以下影响:

    • 如果tls_version在服务器启动期间为系统变量分配了一个包含已弃用的 TLS 协议的值,则服务器会将每个已弃用协议的警告写入错误日志。

    • 如果客户端使用已弃用的 TLS 协议成功连接,则服务器会将警告写入错误日志。

    在客户端,弃用没有明显效果。如果配置为允许弃用的 TLS 协议,则客户端不会发出警告。这包括:

    • --tls-version支持指定用于连接到 MySQL 服务器的 TLS 协议 的选项的客户端程序 。

    • 使副本能够为与源服务器的连接指定 TLS 协议的语句。(CHANGE MASTER TO有一个 MASTER_TLS_VERSION选项。)

    (缺陷号 32565996)

包装说明

  • 包含curl而不是链接到系统curl库的二进制包已升级为使用curl7.77.0。(缺陷号 33077562)

  • 捆绑lz4库已升级到 1.9.3 版。(漏洞#29747853)

修正错误

  • InnoDB: 从 MySQL 5.6 升级到 MySQL 5.7 并在启用 undo log truncation 的情况下启动服务器后,innodb_undo_log_truncate=ON在启动 undo tablespace truncate 操作时发生死锁。死锁导致长时间的信号量等待和最终失败。从 MySQL 5.6 直接升级到 MySQL 5.7.35 或更高版本可避免此潜在问题。(缺陷号 32800020)

  • InnoDB:InnoDB机械缓存插件源 中解决了整数下溢问题 (错误#32620378,错误#32620398)

  • InnoDB:在使用行格式 定义的表上允许键前缀长度大于 767 字节 REDUNDANT的索引,超过了该行格式的索引键前缀长度限制。添加索引的 ALTER TABLE操作验证了 innodb_default_row_format 变量定义的行格式的索引键前缀长度,而不是表的实际行格式。此修复可确保针对正确的行格式验证索引键前缀长度。(错误#32507117,错误#102597)

  • InnoDB: 在线缓冲池大小调整操作释放了先前的缓冲池页面哈希,与需要先前页面哈希的并发缓冲池查找冲突。(缺陷号 32460315)

  • InnoDB: 缓冲池刷新列表尾部的许多系统临时表页面导致性能下降。flush_list_mutex当刷新列表扫描遍历系统临时表页面时,将举行。 刷新列表扫描现在排除系统临时表页面。(漏洞 #31060470,漏洞 #98974)

  • InnoDB: 二进制日志循环死锁发生在使用基于语句的复制的系统上,其中有大量并发更新操作和低 innodb_thread_concurrency 设置。(漏洞 #30215068,漏洞 #96374)

  • Replication:设置 系统变量 replication_optimize_for_static_plugin_config 后,Group Replication和半同步复制的插件在服务器关闭时无法卸载干净。(缺陷号 32798287)

  • 复制:START GROUP_REPLICATIONSTOP GROUP_REPLICATION语句在组的视图更改发生的同时发出时,可能会发生死锁。(错误#32738137,错误#32836868)

  • 复制:STOP GROUP_REPLICATION如果在组成员上的复制通道试图提交事务时发出语句,则 可能会发生死锁服务器现在如果不能获取到相关的锁就立即回滚事务,而不是等待锁和提交完成而导致死锁。(漏洞#32633176)

  • 复制: 在多线程副本上,重试事务时,对活动事件的引用有时管理不当。(缺陷号 32590974)

  • 复制: 副本服务器现在在应用和提交与其关联的事务之前检查并验证 GTID 的事务 ID 部分。(缺陷号 32103192)

  • 复制: 如果用于计算事务依赖性的写入集哈希中省略了唯一的辅助键,则复制可能会在多线程副本上停止,从而导致在多线程副本上执行事务时出错。写入集哈希现在始终包含唯一的辅助键,即使它们不包含在读取集和写入集中。(缺陷号 31636339)

  • JSON: 传递NULL到期望JSON参数的存储过程导致调试版本中的断言失败。(缺陷号 23209914)

  • 如果在 XA 事务被拒绝或由于死锁而被迫回滚后立即执行 DML 语句,复制可能会失败。(缺陷号 32707060)

  • mysql_change_user()C API 函数没有正确解析 数据包, 这COM_CHANGE_USER可能导致无法处理可能在 mysql_change_user()调用之前提供的可选查询属性。感谢 René Cannaò 的贡献。(错误#32391415,错误#102266)

  • 在隐式事务开始时重新准备准备好的语句可能会导致 ER_GTID_NEXT_TYPE_UNDEFINED_GROUP 错误。(错误#32326510,错误#102031)

  • 将大量数据加载到具有全文搜索索引的表中时发生内存不足错误。在将数据插入全文搜索辅助表时,并未考虑分配给全文搜索缓存的所有内存。(缺陷号 31576731)

  • 联机构建索引时,虚拟列上的二级索引已损坏。

    对于UPDATE语句,我们按如下方式修复:如果索引记录的虚拟列值设置为NULL,那么我们从聚簇索引记录中生成该值。(缺陷号 30556595)

  • 布尔系统变量可以分配负值。(缺陷 #11758439,缺陷 #50643)