Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.25 的变化(2015-05-29,全面上市)

MySQL 5.6.25 的变化(2015-05-29,全面上市)

MySQL 企业笔记

  • 以前,启用 mysql_firewall_trace系统变量会导致 MySQL Enterprise Firewall 写入 firewall_trace.txt数据目录中命名的文件。那不再做。现在 mysql_firewall_trace启用,对于PROTECTING模式,防火墙将拒绝的语句写入错误日志。

安全说明

  • my_print_defaults现在屏蔽密码。要以明文形式显示密码,请使用新 --show选项。(错误#19953365,错误#20903330)

添加或更改的功能

  • MySQL Enterprise Firewall 在解析器状态下运行,不能与绕过解析器的查询缓存一起很好地工作。MySQL Enterprise Firewall 现在检查是否启用了查询缓存。如果是这样,它会显示一条消息,指出查询缓存必须被禁用并且不会加载。(缺陷号 20913616)

  • MySQL 发行版现在包括 innodb_stress一套测试用例。感谢 Mark Callaghan 的贡献。(错误#76347,错误#20717127)

修正错误

  • 创新数据库;分区:表 的CREATE_TIMEINFORMATION_SCHEMA.TABLES现在显示分区表的正确表创建时间 InnoDB。表的 CREATE_TIMEINFORMATION_SCHEMA.PARTITIONS现在显示分区表分区的正确分区创建时间InnoDB

    表的UPDATE_TIMEINFORMATION_SCHEMA.TABLES现在显示分区InnoDB表最后一次由 、 或 更新INSERTDELETE时间 UPDATE。表的 UPDATE_TIMEINFORMATION_SCHEMA.PARTITIONS现在显示分区InnoDB 表的分区上次更新的时间。(缺陷 #69990,缺陷 #17299181)

  • InnoDB: 由于 XA PREPARE 事务持有显式锁,关闭时引发断言。(缺陷 #20816223,缺陷 #76567)

  • InnoDB: 设置(、 和 遇到有效但不匹配的校验和时停止 例如,对于 ,有效的校验和会导致服务器停止。现在,不是停止服务器,而是 只打印一条错误消息。(缺陷号 20568464)innodb_checksum_algorithm strict_*strict_nonestrict_innodbstrict_crc32InnoDBinnodb_checksum_algorithm=strict_crc32innodbInnoDB

  • InnoDB:memcached set命令允许负过期时间值。过期时间在内部存储为无符号整数。负值将被转换为一个大数字并被接受。最大过期时间值现在被限制为INT_MAX32防止负过期时间值。(缺陷 #20478242,缺陷 #75790)

  • InnoDB: 在错误处理期间从数据字典缓存中删除外键对象导致服务器退出。(缺陷号 20442523)

  • InnoDB: SHOW ENGINE INNODB STATUS由于计数器溢出错误,输出显示负保留和信号计数值。(缺陷号 20417397)

  • InnoDB: 在重新使用游标事务进行写入操作之前,未能检查游标事务只读选项的状态,导致服务器在 memcached工作负载期间退出。(缺陷号 20391552)

  • InnoDB:内存缓存客户端 采用的 MDL 锁导致 MySQL 企业备份FLUSH TABLES WITH READ LOCK操作挂起。(缺陷号 20275612)

  • InnoDB: 对于结果排序算法中合并块的大小的估计太低导致服务器退出。(缺陷号 20049521)

  • InnoDB: 对于全文搜索,优化器可能会选择一个不会产生正确相关性排名的索引。(错误#74686,错误#19950568)

  • 分区: 创建分区表时,包含过多字符的DATA DIRECTORYINDEX DIRECTORY(缺陷号 20809045)

  • 分区:ALTER TABLE在写锁生效的分区表上 执行 an(错误#74288、错误#74634、错误#19784790、错误#19918805)

    参考资料:另请参阅:Bug #19856162、Bug #74451。

  • 复制:binlog_row_image在运行设置为 的服务器时,在某些情况下,行解包无法正常运行 minimal。(缺陷号 20468712)

  • 复制: 启用二进制日志记录后,使用存储函数和触发器导致长时间运行的过程插入许多记录导致内存使用量迅速增加。这是由于每个变量都分配了内存。该修复程序确保在这种情况下,内存分配一次并重复使用相同的内存。(错误#75879,错误#20531812)

  • 复制: 如果在向接收到的 GTID 集添加 GTID 时遇到错误,则日志锁未正确释放。这可能会导致死锁。(错误#75781,错误#20492319)

  • 复制: 运行 MySQL 5.6.24 或更早版本的从服务器无法连接到运行 MySQL 5.7.6 及更高版本且具有 gtid_mode=OFF_PERMISSIVEgtid_mode=ON_PERMISSIVE。该修复确保运行 MySQL 5.6.25 及更高版本的从服务器可以连接到这样的主服务器,只要从服务器 gtid_mode兼容。换句话说,运行 MySQL 5.6.25 及更高版本的从服务器 gtid_mode=OFF可以连接到运行 MySQL 5.7.6 及更高版本的主 gtid_mode=OFF_PERMISSIVE服务器,而运行 MySQL 5.6.25 及更高版本的从服务器 gtid_mode=ON可以连接到运行 MySQL 5.7 的主.6 及更高版本具有 gtid_mode=ON_PERMISSIVE. 其他组合不兼容。(错误#75769,错误#20471216)

  • 复制: 如果在使用多线程从站时发生错误,发出 CHANGE MASTER TO导致 ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误的语句,然后发出RESET SLAVE,由于重复 的ER_MTS_CHANGE_MASTER_CANT_RUN_WITH_GAPS 错误而无法更改主站。在这种情况下,运行mysqld的调试版本会 导致意外退出。该修复确保多线程从站的恢复过程避免了这种情况。(错误#75574,错误#20411374)

  • 复制: 当使用半同步复制时,当线程数增加到超过某个阈值时性能会下降。为了提高性能,现在只有提交的线程负责删除活动事务节点。所有其他操作都不会触及此活动事务列表。(错误#75570,错误#20574628)

  • 复制: 使用mysqlbinlog处理大于 1.6GB 的日志事件因内存不足错误而失败。这是由转换长度变量的内部错误引起的。该修复程序升级了长度变量以避免编码和解码函数溢出。(错误#74734,错误#20350989)

  • 复制:master_info_repository=TABLE 接收线程将接收到的事件信息存储在一个表中时。更新表过程中使用的内存未正确释放,这可能导致内存不足错误。该修复程序可确保在接收线程将事件刷新到中继日志文件后,释放使用的内存。(错误#72885、错误#19390463、错误#69848、错误#20124342)

  • 复制: 使用mysqlbinlog重播以 结尾的中继日志GTID_LOG_EVENT可能导致以下错误:

    ERROR 1790 (HY000) @@SESSION.GTID_NEXT 不能被拥有 GTID 的客户端更改。客户拥有 UUID:GTID. 所有权在 COMMIT 或 ROLLBACK 时释放。

    如果中继日志轮换发生(通过接收器线程重新启动或在发出ROTATE命令之后)恰好在写入 之后GTID_LOG_EVENT,当重放此类中继日志的结尾时 ROTATE_EVENT,它被错误地识别为在事务内,而事务实际上是在 之后开始的GTID_LOG_EVENT。这导致 mysqlbinlog追加SET @@SESSION.GTID_NEXT='AUTOMATIC',导致 GTID_NEXT一条接一条的两条语句。该修复程序确保mysqlbinlogSET @@SESSION.GTID_NEXT='AUTOMATIC' 仅在事务之外且没有先前 的GTID_LOG_EVENT.

    同样,使用mysqlbinlog连接和重放包含部分 GTID 事务的中继日志会导致上述错误。AUTO_POSITION 如果接收器线程在从主服务器传输事务的过程中重新启动,则中继日志可以包含部分 GTID 事务。在重新启动时,slave 再次检索完整的事务。在这种情况下,第一个中继日志包含部分 GTID 事务,第二个中继日志再次包含完整的 GTID 事务。当使用mysqlbinlog连接这样的中继日志时,未正确检测到部分事务,因此ROLLBACK未正确生成。该修复程序使用第二个中继日志的格式描述事件识别部分 GTID 事务,确保ROLLBACK正确添加。(错误#70711,错误#17650326)

  • 对于较小的 read_rnd_buffer_size系统变量值,临时结果的内部缓存可能会失败并导致查询执行失败。(缺陷号 20895852)

  • MySQL Enterprise Firewall 使用的normalize_statement()功能可能导致某些与密码相关的语句退出服务器。(缺陷号 20873209)

  • 失败FLUSH PRIVILEGES 的语句后跟创建或删除帐户的语句可能会导致服务器退出。(缺陷号 20857652)

  • MySQL Enterprise Firewall 调试代码可能会泄漏内存。(缺陷号 20849157)

  • std::stringstreamMySQL Enterprise Firewall 使用的代码可能导致服务器退出。(缺陷号 20848536)

  • SHOW VARIABLES互斥量被锁定两次,导致服务器退出。(缺陷号 20788853)

  • ull2dec()进行了修改以避免 GCC 5 在优化模式下出现问题。(缺陷号 20768820)

  • 使用 GCC 5,调试构建因编译器警告而失败。(缺陷号 20768717)

  • 系统 mysql_firewall_max_query_size 变量应该只在运行时读取,但可以修改它。(缺陷号 20608993)

  • 万一无法在INFORMATION_SCHEMA 表中存储信息,MySQL Enterprise Firewall 可能会泄漏内存。(缺陷号 20593257)

  • 在某些情况下,libedit 命令行库可能会在数组边界之外写入并导致客户端程序崩溃。(缺陷号 20318154)

  • mysql_config_editor在加密密码时可能会异常退出。(缺陷号 20294225)

  • 授权表的主机值匹配可能无法使用包含通配符的最具体的值。(缺陷号 20181776)

  • 对于与 yaSSL 链接的 MySQL 发行版,损坏的客户端密钥文件可能会导致客户端退出。(缺陷号 20168526)

  • 对于具有大量表的连接查询,服务器可以退出将连接转换为半连接。(缺陷号 20109861)

  • 通过向新帐户授予特权来删除mysql.user后续行可能会导致服务器退出。(缺陷号 20031475)

  • 重命名mysql.procs_priv表并执行SHOW GRANTS导致服务器退出。(缺陷号 20006361)

  • 在存储过程中,访问 DDL 之后的视图列或 FLUSH TABLES过程中的语句可能会导致服务器退出。(漏洞#19897405)

  • BINLOG 在语句打开临时表时 执行某些语句HANDLER可能会导致服务器退出。(错误#19894987,错误#20449914)

  • 对于具有ORDER BY 通过列号 GROUP_CONCAT()引用具有外部引用的表达式的准备好的语句,重复执行语句可能会导致服务器退出。(漏洞 #19814337)

  • -Wpointer-bool-conversion使用和 -Wundefined-bool-conversion编译器选项调整CMake配置以处理 Clang 3.5 报告的新警告 (漏洞 #19584183)

  • 将损坏的空间数据加载到MyISAM 表中可能会导致服务器在索引构建期间退出。(漏洞#19573096)

  • 在服务器启动时指定--general_log_file= (使用空值)导致服务器失败并退出。(漏洞 #19392264)

  • 调整CMake配置以处理 Clang 3.3 报告的警告。(漏洞#17486216)

  • 一些 MySQL Enterprise Firewall 诊断消息是在log_error_verbosity 系统变量的控制之外编写的。(错误#76612,错误#20848331)

  • 服务器拒绝了空COM_SHUTDOWN 数据包。(错误#76552,错误#20810928)

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

  • ProvidesRPM .spec文件 中 的规则将mysql-embedded拼错为mysql-emdedded。(错误#76385,错误#20734434)

  • 不适当-Werror的选项可能出现在 mysql_config --cflags输出中。(错误#76019,错误#20590904)

  • 使用 MySQL 5.6 版本的mysqladmin更改 MySQL 5.7.6 安装上的帐户密码导致帐户密码无法使用。(错误#76018,错误#20590548)

  • AddressSanitizer 编译错误已消除。(错误#75739、错误#20459338、错误#75740、错误#20459363)

  • threadsPerformance Schema 表中,随着线程状态的改变,主线程仪器的PROCESSLIST_STATEPROCESSLIST_INFO值没有改变。thread/sql/main(错误#74517,错误#19887143)

  • 当存在大量空 表时,对INFORMATION_SCHEMA TABLES和 表 的某些查询可能会导致内存使用过多。(错误#72322,错误#18592390)COLUMNSInnoDB

  • 包含HAVING基于非确定性函数的子句的查询可能会产生不正确的结果。(缺陷 #69638,缺陷 #17055185)

  • 对于将准备好的语句记录到一般查询日志中,该 Execute行是在语句执行之后而不是之前记录的。(错误#69453、错误#16953758、错误#20536590)

  • MySQL 无法使用 OpenSSL 0.9.8e 进行编译。(错误#68999,错误#16861371)