此版本增加了对 Debian 8 和 Ubuntu 15.04 的支持。
-
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_END
和TIMER_WAIT
asNULL
:events_waits_current events_stages_current events_statements_current
为了能够确定尚未完成的事件已经运行了多长时间,计时器列现在设置如下:
TIMER_START
已填充(与之前的行为相同)TIMER_END
填充有当前计时器值TIMER_WAIT
填充了到目前为止经过的时间 (TIMER_END
−TIMER_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_func
当os_file_create_func
设置innodb_flush_method
为O_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_ID
和FTS_DOC_ID_INDEX
列阻止了在线 DDL 操作。(缺陷 #20590013,缺陷 #76012)InnoDB: memcached
InnoDB
插件 错误地处理了无符号 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 BY
上CHAR(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 Firewall
sp_set_firewall_mode()
存储过程会产生错误,但firewall_users
无论如何都会将用户添加到表中。(错误#76914,错误#21021875)规范化语句中的标识符有时被引用有时不被引用,这种不一致导致语句摘要和摘要文本匹配失败。这导致 MySQL Enterprise Firewall 和 Performance Schema aggregation by digest 出现问题。标识符现在被一致引用。(错误#76723,错误#20896539)
Ubuntu 软件包缺少 killall和psmisc的依赖项。(错误#76716,错误#20893836)
在 OS X 10.10 (Yosemite) 上,mysqld无法自动启动。启动项已被 launchd作业替换,这使自动启动的首选项窗格复选框再次起作用。(错误#74434,错误#19858350)
选择连接顺序时,优化器可能会错误地计算表扫描的成本并选择表扫描而不是更有效的
eq_ref
连接。(错误#71584,错误#18194196)