Documentation Home
MySQL 5.7 发行说明  /  MySQL 5.7.20 的变化(2017-10-16,全面上市)

MySQL 5.7.20 的变化(2017-10-16,全面上市)

审核日志说明

  • audit_log 插件 的事件匹配过滤规则现在支持一个abort元素,该元素可用于防止符合条件的事件执行。有关详细信息,请参阅审核日志过滤。例如,此功能可用于增强 MySQL Enterprise Firewall 的功能,它通过编写匹配语句的审计过滤规则并根据语句本身的特征阻止它们,从而在每个用户的基础上阻止 SQL 语句。

弃用和移除说明

安装注意事项

  • 对于使用 systemd 的平台(请参阅使用 systemd 管理 MySQL 服务器),如果在服务器启动时为空,则数据目录将被初始化。如果数据目录是一个暂时消失的远程挂载,这可能是一个问题:挂载点将显示为一个空数据目录,然后将其初始化为一个新的数据目录。现在可以抑制这种自动初始化行为。在文件中指定以下行 /etc/sysconfig/mysql(如果不存在则创建文件):

    NO_INIT=true

    (漏洞 #26595288,漏洞 #87287)

钥匙圈笔记

包装说明

  • MySQL Server Docker 映像中缺少mysqlcheck ,这会阻止mysql_upgrade 运行。(错误#26400146,错误#86968)

安全说明

  • mysqldmysql_ssl_rsa_setup 自动生成的证书 现在使用 X509 v3 而不是 v1。(漏洞#26521654)

X 插件说明

  • 使用 X 协议的Mysqlx.Connection.CapabilitiesGet请求未返回可用身份验证机制的完整列表。(缺陷号 26044113)

  • 对于混合大小写或大写的模式名称,该语句 list_objects可能会错误地将集合报告为表。(缺陷号 25769683)

  • X 插件从插件列表中省略,以包含用于测试数据目录权限。(漏洞 #24823999)

添加或更改的功能

  • 复制: 在以前的版本中,发布STOP GROUP_REPLICATION停止了插件,但服务器仍然接受事务。这意味着交易没有传输到集团。为了STOP GROUP_REPLICATION更安全,now super_read_only设置为 ONimmediately upon issued STOP GROUP_REPLICATION,确保不接受任何交易。(缺陷 #25495067,缺陷 #84795)

  • 复制:group_replication_member_weight 添加了变量,使您能够在单主模式下控制新主节点的选举 。 在以前的版本中,主要选举是基于成员的 UUID,在发生故障转移时,最低的 UUID 被选为新的主要成员。使用此变量为成员分配数字权重以确保选出特定成员,例如在主节点的计划维护期间或确保优先考虑某些硬件。

修正错误

  • InnoDB: 从与表空间导入相关的函数中删除了无效的错误处理代码。(漏洞#26595476)

  • InnoDB: 在 DML 操作期间检查丢弃的分区仅检查第一个分区。未能检查其他丢弃的分区导致断言失败。(漏洞#25942592)

  • InnoDB: 在对具有许多分区的表进行大型更新操作期间,从属实例上出现复制滞后。(错误#25687813,错误#85352)

  • InnoDB: 结束范围比较期间发生故障。(缺陷号 25669686)

  • InnoDB:innodb_buffer_pool_load_now 在只读模式下 启用 向缓冲池加载线程发出信号的事件未初始化。(缺陷号 25586766)

  • InnoDB: 旨在模拟不存在页面上的随机读取的测试相关代码引发了无效断言。(缺陷号 25479538)

    参考资料:此问题是 Bug #25053705 的回归。

  • InnoDB: 长时间等待全文搜索同步操作持有的字典操作锁导致服务器退出。(错误#24938374、错误#26376681、错误#26376239)

  • 分区: 在某些情况下,当获取堆记录时,分区 ID 可以设置为零。(缺陷 #86255,缺陷 #26034430)

  • 分区: 涉及NULL的查询并不总是在由 . 分区的表上得到正确处理 LIST。(错误#76418,错误#20748521)

    参考资料:另请参阅:Bug #86255、Bug #26034430。

  • 复制: 更新特定于复制的存储库表的 MySQL 内部管理命令,例如在使用 mysqlrplsync实用程序进行复制同步检查期间,现在可以绕过读锁。这使得此类命令能够执行,而无需考虑系统变量和read_only模式 的设置。(错误#26414532,错误#86224)super_read_onlyautocommit

  • 复制: 当 Group Replication 插件 Delayed_initialization_thread由于资源不可用而无法启动时,会保留一个锁定的互斥量,这会导致 Delayed_initialization_thread析构函数出现问题。该修复可确保在线程启动失败时解锁互斥量。(缺陷号 26394678)

  • 复制: 如果选项文件包含与组复制相关的设置,服务器可能会在启动时意外停止。(漏洞#26314472)

  • 复制: FLUSH LOGS在提交阶段已发送错误响应后尝试发送 OK 消息。感谢 Laurynas Biveinis 提供补丁。(错误#26272158、错误#25363745、错误#84437)

  • 复制: 对于一些包含大量插入的工作负载,XCOM 事务缓存可能会消耗大量内存。该修复程序限制了缓存的大小以减少对内存使用的影响。(漏洞 #26241291)

  • 复制: 在恢复成员上COUNT_TRANSACTIONS_REMOTE_IN_APPLIER_QUEUE 时设置为不正确的值 group_replication_recovery_complete_at="transactions_certified"(缺陷号 26180350)

  • 复制: 为组复制恢复通道配置时group_replication_recovery_use_ssl 和 ​​的值 group_replication_recovery_ssl_verify_server_cert(漏洞#26142801)

  • 复制: 复制带有索引的分区表时,在HASH_SCAN指定为 slave_rows_search_algorithms 设置一部分的复制从站上,从站 I/O 线程有时会因错误而停止 HA_ERR_KEY_NOT_FOUND。(缺陷号 26137159)

  • 复制: 可以设置 server_uuid为与 相同的值 group_replication_group_name。这样做可能会导致意外行为,因为 GTID 由 UUID 标识。现在无法设置 server_uuid为与 相同的值 group_replication_group_name。(漏洞 #26035931)

  • 复制:供内部服务器使用 的系统变量 pseudo_slave_mode,有时会在事务内部更改时引发断言。服务器不再在事务中更改此变量。(缺陷 #26034192,缺陷 #86250)

  • 复制: 当命令FLUSH LOGSPURGE LOGS BEFORE用于设置了到期时间的二进制日志文件并且二进制日志文件正在使用中时,会发出误导性警告。该警告与正在使用的文件有关,并暗示已发生清除尝试,即使尚未达到到期时间。现在,MySQL首先检查二进制日志文件的过期时间,然后才检查该文件是否在使用中。因此,警告仅针对使用中的二进制日志文件发出,该文件已经足够旧,可以被清除。(缺陷号 25973525)

  • 复制: 当使用超过 1024 个文件描述符时,组复制意外停止。(漏洞#25892493)

  • 复制: 既然 XA 事务是分两部分准备和提交的,那么基于语句的复制的问题已经确定。如果在主服务器上提交的两个 XA 事务正在以相反的顺序在从服务器上准备,则可能会发生无法安全解析的锁定依赖关系。基于行的复制不存在此问题。

    因此,XA 事务现在被认为对于基于语句的复制是不安全的。

    • 当 时binlog_format = STATEMENT,对 XA 事务内的 DML 语句发出警告,并且复制可能会因从站死锁而失败。

    • 当 时binlog_format = MIXED,使用基于行的复制记录 XA 事务中的 DML 语句。

    • 当 时binlog_format = ROW,XA 事务内的 DML 语句会像以前一样被记录下来。

    (漏洞 #25786490,漏洞 #85639)

  • 复制: 复制客户端不再启用LOCAL 功能LOAD DATA ,因为它们不使用 LOAD DATA LOCAL语句。(漏洞 #24763131)

  • 复制: 如果在创建多个从属应用程序工作线程时发生故障,一些线程将被孤立,并且不会收集它们的资源。感谢 Laurynas Biveinis 为修复此错误所做的贡献。(缺陷 #24679056,缺陷 #82980)

  • 复制:binlog_checksum选项不能在事务中更改。当在二进制日志上执行请求的功能时,MySQL 无法记录此语句,正如事务内部所需要的那样。(漏洞 #22914463)

  • 复制: 如果主机名解析不适用于组复制中的成员,则尝试连接时返回的错误是指凭据。改进了错误消息以描述主机名解析问题。(漏洞 #86858,漏洞 #26368004)

  • 复制: 组复制分区线程在性能模式表中不可见。(漏洞 #86626,漏洞 #26241008)

  • 复制: group_replication_force_members 可以在小组工作正常的情况下使用,换句话说,大多数人可以到达。这种不正确的使用可能会导致组的不稳定。因此,它的使用仅限于创建它的场景,用于在无法访问大多数成员时从先前组成员的子集形成新成员。(缺陷 #86359,缺陷 #26093967)

  • 复制: 改进了用于服务器启动的延迟初始化机制。现在,它只会在服务器处于读取模式之前阻止连接。(漏洞 #86271,漏洞 #26037344)

    参考资料:另请参阅:Bug #84731、Bug #25475132。

  • 复制: 当一个主要成员,例如单主组或多主组中的主成员,也有异步复制通道向其提供数据的主成员停止时,异步通道将继续应用更改。虽然 super_read_only时已设置STOP GROUP_REPLICATION,但这并没有停止任何已经运行的正在运行的异步复制通道。这意味着可以在成员本地进行更改,并且必须手动停止异步复制通道。现在,当组复制停止时,无论是由于错误还是 STOP GROUP_REPLICATION发出时,所有异步复制通道都将停止。(缺陷 #86222,缺陷 #26024253)

  • 复制: 如果组复制插件在组运行时被卸载,则该插件被标记为卸载。这可能会导致服务器关闭无法成功完成。如果无法访问组的大多数,此修复可确保无法卸载组复制插件。在这种情况下,有必要STOP GROUP_REPLICATION在卸载插件之前发布。(漏洞 #85322,漏洞 #25673788)

  • 复制: 改进了组复制的日志记录。现在,日志记录包括成员加入或离开、视图更改等信息。(缺陷 #84798,缺陷 #25495393)

    参考资料:另请参阅:Bug #26422857。

  • 编译 with-DWITHOUT_SERVER=1导致 my_symlink.c编译失败,因为缺少#includefor my_dir.h. 感谢 Christian Hesse 提供的补丁。(错误#26495816,错误#87137)

  • yaSSL 可能错误地执行 TLS 密码协商。(漏洞#26482173)

  • 用于 RHEL6 及更高版本的 Linux RPM 规范文件更新了注释,建议安装该 redhat-rpm-config软件包以添加方便的宏,从而更轻松地重建 RPM 软件包。感谢 Simon Mudd 提供的补丁。(漏洞 #26474153,漏洞 #87098)

  • 如果错误日志配置错误并且服务器无法启动,则不会产生描述问题的输出。(漏洞 #26447825,漏洞 #87087)

  • mysqld_multi被修改为使用 mysqld --initialize而不是弃用的mysql_install_db. 感谢詹石提供的补丁。(漏洞 #26446321,漏洞 #87080)

  • ORDER BY在包含外连接和子查询的查询中 添加导致在子查询返回 0 行的情况下,为子查询中的列定义的常量值被错误地提升为常量值。(漏洞#26432173)

  • 服务器无法检查分区名称的最大路径长度。(缺陷号 26390632)

  • 包含混合反斜杠和反引号的标识符可能无法正确解析。(漏洞#26372491)

  • Debian 平台的源代码包包含预构建的调试二进制文件,导致在除构建这些二进制文件的架构之外的任何架构上构建失败。(缺陷号 26186911)

  • RPM 包中的mysqld_pre_systemd脚本在选项文件中找到错误日志设置,如果指定为log-error但不是 as log_error,尽管两者都是允许的。(错误#26148391,错误#86466)

  • 当使用该 选项 运行mysqlbinlog--read-from-remote-server时 ,使用该选项指定的重写规则将 --rewrite-db被忽略,因此数据不会写入目标数据库。(漏洞 #26117735,漏洞 #86288)

  • REFERENCES在某些情况下,特权检查可能会使用不正确的数据库。(漏洞 #26106655)

  • 卸载daemon_memcached插件导致严重错误。(缺陷号 25909540)

  • rpl_diff.inc测试用例文件没有发现服务器之间的数据差异 。感谢 Yura Sorokin 提供的补丁。(错误#25860138,错误#85838)

  • ngram 全文解析器搜索查询返回不正确的结果并提出断言。(漏洞 #25851975)

  • 从视图中选择可能会产生不同的结果,具体化启用与具体化禁用。(漏洞 #25782811,漏洞 #85622)

  • 性能模式无法检查客户端连接的最大主机长度。(漏洞 #25510805)

  • mysqlpump显示有关转储表数的错误进度信息。(缺陷号 25432850)

  • 一些mysqldump警告进入标准输出而不是标准错误输出,因此被写入转储文件。(错误#25380000,错误#82992)

  • LOAD DATA无法接受转义序列后的多字节字符。(错误#25147988、错误#83950、错误#25865525)

  • 当全文搜索结果超出 innodb_ft_result_cache_limit 设置时发生服务器错误。此漏洞的补丁还向后移植了一个相关补丁(漏洞 #21140111)。(缺陷号 25033538)

  • 如果存储函数被优化器视为常量,则从子句中的NOT IN 条件中的子查询调用它WHERE可能会导致服务器退出。(缺陷号 23577867)

  • 一个mysqldump内存泄漏是固定的。感谢 Yura Sorokin 提供的补丁。(缺陷 #23531150,缺陷 #81714)

  • 当查询使用批处理密钥访问优化并且虚拟生成的列是连接缓冲区的一部分时,可能会导致不正确的结果或服务器退出。(缺陷号 23169112)

  • 如果会话回滚到保存点然后被终止,则可以提交到保存点为止的语句。(错误#22350047,错误#79596)

  • 对于使用连接器/Python 并使用sha256_password插件进行身份验证的客户端,服务器可能无法正确处理连接。(漏洞 #21421642)