Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.26 的变化(2015-07-24,全面上市)

MySQL 5.6.26 的变化(2015-07-24,全面上市)

此版本增加了对 Debian 8 和 Ubuntu 15.04 的支持。

MySQL 企业笔记

  • MySQL Enterprise Edition 合并了 MySQL Enterprise Firewall 的这些更改:

    • 防火墙实施DETECTING 入侵检测模式。对于此模式下的帐户,防火墙会检测到可疑语句并将其写入错误日志,但不会拒绝访问。新的 Firewall_access_suspicious 状态变量计算此类语句的数量。存储过程现在 sp_set_firewall_mode()在内存规则和持久存储中的DETECTING模式之间同步,就像它对PROTECTING模式所做的那样。

    • 一个新的sp_reload_firewall_rules()存储过程从存储在表中的规则中重新加载注册帐户的内存中规则 mysql.firewall_whitelist,从而更好地控制单个帐户的防火墙操作。

    • 一个新mysql_firewall_flush_status() 功能重置防火墙访问计数器状态变量。

    如果您安装了以前版本的版本,要升级 MySQL Enterprise Firewall,请先卸载旧版本。然后安装新版本并再次注册您的防火墙配置。有关说明,请参阅安装或卸载 MySQL Enterprise Firewall

性能模式注释

  • 当前事件计时现在提供更多信息。以前,当等待、阶段或语句事件正在执行时,相应的表会显示带有 TIMER_START填充的事件,但带有 TIMER_ENDTIMER_WAIT as NULL

    events_waits_current
    events_stages_current
    events_statements_current

    为了能够确定尚未完成的事件已经运行了多长时间,计时器列现在设置如下:

    • TIMER_START已填充(与之前的行为相同)

    • TIMER_END填充有当前计时器值

    • TIMER_WAIT填充了到目前为止经过的时间 ( TIMER_ENDTIMER_START)

    要查找尚未完成(即没有 END_EVENT_ID)并且到目前为止花费的时间超过 N皮秒的事件,监控应用程序可以在查询中使用此表达式:

    WHERE END_EVENT_ID IS NULL AND TIMER_WAIT > N

    (错误#75156,错误#20889406)

安全说明

  • 由于 LogJam 问题 ( https://weakdh.org/),OpenSSL更改了 openssl-1.0.1n 及更高版本的 Diffie-Hellman 密钥长度参数。OpenSSL 在 http://openssl.org/news/secadv_20150611.txt提供了详细的解释。为了在 MySQL 中采用此更改,进行了以下修改:

    • 用于创建 Diffie-Hellman 密钥的密钥长度 vio/viosslfactories.c已从 512 位增加到 2,048 位。

    • MySQL Commercial Server 的链接 OpenSSL 库已从版本 1.0.1m 更新到版本 1.0.1p。http://www.openssl.org/news/vulnerabilities.html中描述了新版本中修复的问题 。此更改不影响 Oracle 生成的 MySQL Community 构建的 MySQL Server,它使用 yaSSL 库。

    (错误#77275、错误#21221862、错误#18367167、错误#21307471、错误#21449838)

添加或更改的功能

  • 复制: 当使用多线程从属时,每个工作线程都有自己的事务队列来处理。在以前的 MySQL 版本中, STOP SLAVE等待所有工作人员处理他们的整个队列。此逻辑已更改,以便STOP SLAVE首先找到由任何工作线程提交的最新事务。然后,它等待所有工作人员完成早于该时间的交易。不处理较新的交易。如果某些工作队列包含多个事务,新逻辑可以STOP SLAVE更快地完成。(缺陷 #75525,缺陷 #20369401)

  • 以前, max_digest_length系统变量控制计算语句摘要的所有服务器函数的最大摘要长度。然而,虽然性能模式可能需要维护许多摘要值,但其他服务器功能(例如 MySQL Enterprise Firewall)每个会话只需要一个摘要。增加该 max_digest_length值对这些函数的总内存需求影响不大,但会显着增加性能模式内存需求。要为性能模式单独配置摘要长度,其摘要长​​度现在由新 performance_schema_max_digest_length 系统变量控制。(缺陷号 20963147)

  • 以前,在服务器运行时更​​改validate_password 插件字典文件(由 validate_password_dictionary_file 系统变量命名)需要重新启动服务器才能识别更改。现在 validate_password_dictionary_file 可以在运行时设置并分配一个值会导致在不重新启动的情况下读取命名文件。

    此外,还有两个新的状态变量可用。 validate_password_dictionary_file_last_parsed 指示上次读取词典文件的时间,并 validate_password_dictionary_file_words_count 指示其中包含的单词数。(错误#66697,错误#14588145)

修正错误

  • InnoDB:ib_cursor_moveto函数不接受字段少于为索引定义的字段的搜索元组。(缺陷 #21121197,缺陷 #77083)

  • InnoDB: 函数ib_table_truncate未能释放事务,导致服务器关闭时挂起。(错误#21121164,错误#77084)

  • InnoDB:ib_open_table_by_id函数向 传递了一个不正确的参数dict_table_open_on_id。(缺陷 #21121084,缺陷 #77100)

  • InnoDB: 在类 Unix 平台上, os_file_create_simple_no_error_handling_funcos_file_create_func设置 innodb_flush_methodO_DIRECT. (缺陷 #21113036,缺陷 #76627)

  • InnoDB:当表或数据库名称包含特殊字符时, 打开外键引用表 foreign_key_checks会导致错误。(缺陷 #21094069,缺陷 #77043)

  • InnoDB: 函数page_zip_verify_checksum为有效的压缩页面返回 false。(缺陷号 21086723)

  • InnoDB:ALTER TABLE ... IMPORT TABLESPACE对具有前缀索引的表 的(缺陷 #20977779,缺陷 #76877)

  • InnoDB: 在并发删除表空间操作期间加载更改缓冲区位图页面失败导致服务器退出。(缺陷号 20878735)

  • InnoDB:InnoDB尝试取消引用 NULL 外键对象 时引发断言(缺陷号 20762798)

  • InnoDB: 导入具有全文索引的表空间导致在尝试重建索引时出现断言。(缺陷号 20637494)

  • InnoDB: 删除全文搜索索引后,隐藏 FTS_DOC_IDFTS_DOC_ID_INDEX列阻止了在线 DDL 操作。(缺陷 #20590013,缺陷 #76012)

  • InnoDB: memcachedInnoDB 插件 错误地处理了无符号 NOT NULL 整数列。感谢 Piotr Jurkiewicz 提供的补丁。(缺陷 #20535517,缺陷 #75864)

  • InnoDB: 一个DROP DATABASE操作提出了一个断言。(漏洞 #19929435)

  • InnoDB: 由于结构不一致,在回滚时找不到索引记录purge_node_t。这种不一致导致警告和错误消息,例如 sec 索引条目更新错误无法清除记录试图清除未标记为删除的 sec 索引条目。(错误#19138298、错误#70214、错误#21126772、错误#21065746)

  • 分区: 在某些情况下, ALTER TABLE ... REBUILD PARTITION在锁定表上执行时未正确处理。(错误#75677,错误#20437706)

  • 复制: 当使用 GTID 时,已经 relay_log_recovery=1意外停止的多线程从站可能会遇到 重启时在 MTS 模式错误中被杀死时无法执行。该修复确保中继日志恢复过程检查 GTID 是否在使用中。如果正在使用 GTID,则多线程从属恢复过程使用 GTID 协议来填充任何未处理的事务。(错误#73397,错误#19316063)

  • 复制: 当两个具有相同 server_uuid内容的从服务器被配置为从单个主服务器复制时,从服务器的 I/O 线程不断重新连接并生成没有新内容的新中继日志文件。在这种情况下,主机现在会生成一个错误并发送给从机。通过从 master 接收到这个错误,slave I/O 线程不会尝试重新连接,从而避免了这个问题。(错误#72581,错误#18731252)

  • semijoin Duplicate Weedout 策略的成本计算不正确可能会导致服务器退出。(漏洞 #21184091)

  • MySQL Enterprise Firewall 记录了服务器收到的准备好的语句,而不是规范化的摘要。(缺陷号 20929568)

  • 对于 MySQL Enterprise Firewall 操作, max_digest_length必须大于 mysql_firewall_max_query_size 或规范化语句被截断。已被删除,因此该 mysql_firewall_max_query_size 问题不再适用,但 max_digest_length仍应设置得足够大以避免语句截断。(缺陷号 20894024)

  • 启用 MySQL Enterprise Firewall 和二进制日志记录可能会导致服务器读取释放的内存。(缺陷号 20848324)

  • 对于较大的值 max_digest_length,性能模式在计算内存需求时可能会遇到溢出错误,从而导致服务器退出。(缺陷号 20738072)

  • regex用于 运算符 的 Spencer库REGEXP在某些情况下可能会发生堆溢出。(缺陷号 20642505)

  • 在选项解析期间, mysqlslap 可能会发生缓冲区溢出错误 。(缺陷号 20605441)

  • 字符串复制代码中的差一错误可能会导致缓冲区溢出。(缺陷号 20359808)

  • GROUP BY或列ORDER BYCHAR(0) NOT NULL可能导致服务器退出。(漏洞 #19660891)

  • 对于一些应该单调增加的状态变量, SHOW GLOBAL STATUS在一个会话中,当其他并发会话更改用户或断开连接时,它们可能会显示为减少。(漏洞#18591145)

  • 在性能模式摘要操作期间调用的不必要的memset()调用已被删除,这通过减少开销来提高性能。(错误#77863,错误#21528683)

  • mysql-systemd-start如果 datadir/etc/my.cnf. (错误#77357,错误#21262883)

  • 在没有 Performance Schema 的情况下构建 MySQL 时编译失败。(错误#77292,错误#21229433)

  • 使用无效用户名调用 MySQL Enterprise Firewallsp_set_firewall_mode() 存储过程会产生错误,但firewall_users无论如何都会将用户添加到表中。(错误#76914,错误#21021875)

  • 规范化语句中的标识符有时被引用有时不被引用,这种不一致导致语句摘要和摘要文本匹配失败。这导致 MySQL Enterprise Firewall 和 Performance Schema aggregation by digest 出现问题。标识符现在被一致引用。(错误#76723,错误#20896539)

  • Ubuntu 软件包缺少 killallpsmisc的依赖项。(错误#76716,错误#20893836)

  • 在 OS X 10.10 (Yosemite) 上,mysqld无法自动启动。启动项已被 launchd作业替换,这使自动启动的首选项窗格复选框再次起作用。(错误#74434,错误#19858350)

  • 选择连接顺序时,优化器可能会错误地计算表扫描的成本并选择表扫描而不是更有效的eq_ref连接。(错误#71584,错误#18194196)