从 MySQL 5.6.7 开始,Oracle 不再为 OS X 10.5、Debian 5、RHEL/OL 4、SLES 10、FreeBSD 7、Windows XP 或 Windows 2003 提供二进制文件。
-
此版本延续了 MySQL 5.6.6 中开始的对服务器参数默认值进行更改的过程。这些更改的动机是提供更好的开箱即用性能并减少数据库管理员手动更改设置的需要。当我们获得反馈时,这些更改将在未来的版本中进行修订。
下表总结了对默认值的更改。这些默认设置中的任何一个都可以通过在服务器启动时指定一个显式值来覆盖。
范围 旧默认 新默认 innodb_data_file_path
ibdata1:10M: 自动扩展 ibdata1:12M: 自动扩展
如果服务器以
secure_auth
禁用状态启动,它不会产生警告,指出这是一个已弃用的设置。(缺陷 #65462,缺陷 #14136937)-
以下项目已弃用,将在未来的 MySQL 版本中删除。在显示备选方案的地方,应更新应用程序以使用它们。
和
SHOW PROFILE
语句SHOW PROFILES
。改用性能模式;请参阅 MySQL 性能模式。未使用的, 和 系统变量。
date_format
datetime_format
time_format
max_tmp_tables
陈旧的
mysql.host
桌子。新的 MySQL 5.6 安装将不再创建此表。对于升级,mysql_upgrade将检查此表并发出警告,如果它是非空的则将被弃用。用于控制插件选项 的(未记录的) 语法。
--plugin-
xxx
xxx
未使用的
multi_range_count
系统变量现已弃用,并将在未来的版本中删除。在 MySQL 5.6.6 中,
INSERT DELAYED
已弃用,将在未来的版本中删除。现在同样适用于 -DELAYED
相关的系统变量、、、、delayed_insert_limit
和 、delayed_insert_timeout
以及 - 相关的 状态 变量 、、、 和 。delayed_queue_size
max_delayed_threads
max_insert_delayed_threads
DELAYED
Delayed_errors
Delayed_insert_threads
Delayed_writes
Not_flushed_delayed_rows
重要变更;分区: 用户分区表的最大分区数从 1024 增加到 8192。(缺陷 #11755685)
表现; InnoDB: 配置选项
O_DIRECT_NO_FSYNC
中添加了 一个新设置innodb_flush_method
此设置与 类似O_DIRECT
,但省略了后续fsync()
调用。适用于某些文件系统,但不适用于其他文件系统。(错误#11754304,错误#45892)InnoDB: 该
--innodb-read-only
选项允许您以只读模式运行 MySQL 服务器。您可以访问InnoDB
只读介质(如 DVD 或 CD)上的表,或者设置一个包含多个实例的数据仓库,这些实例都共享同一个数据目录。有关使用详细信息,请参阅 配置 InnoDB 以进行只读操作。(漏洞 #14143600)-
InnoDB: 新
INFORMATION_SCHEMA
表,innodb_cmp_per_index
并innodb_cmp_per_index_reset
提供有关InnoDB
使用 压缩的表的统计信息。索引级别的统计信息让 DBA 衡量压缩操作成功或失败的比例对于表、索引、 页面大小和 工作负载的特定组合是否可接受。通常情况下,压缩失败率应低于 10%,尤其是在使用压缩表处理具有频繁 、 或 操作的 OLTP 式工作INSERT
负载UPDATE
时DELETE
。因为收集这些统计数据可能非常耗时并且会对性能产生负面影响,所以只有在新配置选项
innodb_cmp_per_index_enabled
设置为时才启用新表ON
。(OFF
默认情况下。) InnoDB:
InnoDB
压缩表中的 每个数据块都包含一定量的空白空间(填充)以允许 DML操作修改行数据而无需重新压缩新值。过多的填充会增加压缩失败的可能性,当数据在大量更改后确实需要重新压缩时,需要进行页面拆分。现在可以动态调整填充量,这样 DBA 就可以降低压缩失败率,而无需使用新参数重新创建整个表,或者使用不同的页面大小重新创建整个实例。相关的新配置选项是innodb_compression_failure_threshold_pct
,innodb_compression_pad_pct_max
-
InnoDB: 您现在可以 从熟悉的 0-9 范围内选择压缩表的压缩级别 。压缩级别由 配置选项控制,默认值为6:
InnoDB
zlib
innodb_compression_level
提高压缩级别会增加 CPU 开销,可能会减少任何特定行所需的存储量,从而降低压缩失败和后续页面拆分的可能性。
降低压缩级别会减少 CPU 开销,可能会增加任何特定行所需的存储量,从而增加压缩失败和后续页面拆分的可能性。
您还可以控制当更新操作导致页面再次被压缩时,缓冲池中的压缩页面是否存储在重做日志中。此行为由
innodb_log_compressed_pages
配置选项控制。关闭压缩页面的日志记录会减少生成的重做数据量,可能会提高吞吐量。如果在 崩溃恢复期间需要压缩页面,则此时将再次压缩。 当 MySQL 配置
-DWITH_SSL=system
为使用 OpenSSL 构建时,如果 OpenSSL 早于版本 1.0.1,CMake 现在会产生错误(错误 #14167227)mysql选项和 C API 函数
--secure-auth
选项 的默认值已从 false 更改为 true 。(漏洞 #13789417)MYSQL_SECURE_AUTH
mysql_options()
CMake的
WITH_SSL
选项现在接受一个path_name
值,该值指示要使用的 OpenSSL 安装的路径名。system
当 CMake 代码检测到较旧或不正确安装的 OpenSSL 版本时,这可能很有用,而不是值。(另一种允许做同样事情的方法是将CMAKE_PREFIX_PATH
选项设置为path_name
。)(错误 #61619,错误 #12762891)Note
如果创建的索引与现有索引重复, 服务器现在会发出诊断。(缺陷 #37520,缺陷 #11748842)-
MySQL 客户端库现在包含内置的 SSL 支持。链接 MySQL 客户端程序时,您不应再指定
-lssl
或-lcrypto
。参考资料:另请参阅:Bug #12762891、Bug #14167227。
-
明文客户端身份验证插件适用于要求服务器接收在客户端输入的密码的
mysql_clear_password
身份验证方案,无需散列。因为密码是明文发送的,所以这个插件应该在加密连接的上下文中使用,比如 SSL 连接,以避免通过网络暴露密码。为了减少无意中使用此插件的可能性,现在要求客户端明确启用它。这可以通过几种方式完成:将环境变量设置为以、或
LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN
开头的值 。这将为所有客户端连接启用插件。1
Y
y
mysql、mysqladmin和mysqlslap客户端程序支持
--enable-cleartext-plugin
在每次调用的基础上启用插件的选项 。mysql_options()
C API 函数支持MYSQL_ENABLE_CLEARTEXT_PLUGIN
在每个连接的基础上启用插件的选项 。此外,任何使用和读取选项文件的程序都可以通过在客户端库读取的选项组中libmysqlclient
包含一个选项来启用该插件 。enable-cleartext-plugin
-
不兼容的更改: 用于
ALTER TABLE
更改外键列的定义可能会导致引用完整性丢失。例如,更改包含NULL
值的外键列会NOT NULL
导致NULL
值变为空字符串。同样,ALTER TABLE IGNORE
删除父表中的行可能会破坏参照完整性。服务器现在禁止更改可能导致引用完整性丢失的外键列。解决方法是
ALTER TABLE ... DROP FOREIGN KEY
在更改列定义之前和ALTER TABLE ... ADD FOREIGN KEY
之后使用。(错误#46599,错误#11754911) -
重要变更;复制: 在正在进行的事务期间发出时,以下任何用于控制 MySQL 复制的语句现在都会导致事务被提交:
有关详细信息,请参阅导致隐式提交的语句。(漏洞 #13858841)
参考资料:另请参阅:Bug #14298750、Bug #13627921。
重要变化: 该
ALTER USER
语句清除了mysql.user
表中的用户密码。它不再这样做。(漏洞 #14226518)重要更改: 以前,
ExtractValue()
和UpdateXML()
函数支持作为参数提供给它们的 XPath 表达式的最大长度为 127 个字符。此限制现在已被删除。(缺陷 #13007062,缺陷 #62429)-
表现; InnoDB: 此修复通过多种方式提高了
InnoDB
memcached插件的性能:后台线程定期提交通过memcached API 调用 对数据库所做的更改。这种基于时间而不是操作次数的提交间隔使您可以增加 的值,
daemon_memcached_w_batch_size
并且daemon_memcached_r_batch_size
不会在 DML 活动不频繁时存在某些更改未提交的风险。innodb_api_bk_commit_interval
您可以通过配置选项 控制这些自动提交的频率 。当通过配置选项启用二进制日志支持时
innodb_api_enable_binlog
,您可以增加daemon_memcached_w_batch_size
高于默认值 1 的值,从而允许多个 DML 操作一起提交,而不是为每个操作单独提交。在内部, 针对涉及 memcached插件 的操作,提高了互斥锁和表打开/关闭的效率。
(漏洞 #14252821)
表现; InnoDB: 该
OPTIMIZE TABLE
语句现在会在适当的时候更新该InnoDB
表的持久统计信息。(漏洞 #14238097)表现; InnoDB: 此修复程序删除 了页面上的冗余校验和验证 。当从磁盘读取压缩页面和解压缩页面时,都会验证校验和。现在仅当从磁盘读取页面时才执行验证。(缺陷 #14212892,缺陷 #64170)
InnoDB
-
表现; 复制;Solaris: 在 Solaris 系统上,启用
slave_parallel_workers
可能会导致从站上的事件执行速度减慢。(漏洞 #14641110)参考资料:另请参阅:Bug #13897025。
表现; 复制:启用 后
slave_parallel_workers
,表示工作队列中超过特定超限水平的事件数量的内部乘数永远不会重置为零,即使已经解决了超额问题;这导致乘数随着时间的推移不断增长,导致从属事件执行速度减慢。(漏洞 #13897025)性能: 视图定义(在
.frm
文件中)未被缓存,因此每次访问视图都涉及文件读取。现在缓存定义以获得更好的性能。(漏洞 #13819275)-
性能: 子查询具体化的某些实例可能会导致性能不佳。子查询具体化现在仅在其成本低于
EXISTS
转换时才被选择。(请参阅使用物化优化子查询和使用 EXISTS 策略优化子查询。)optimizer_switch
此修复为名为 的系统变量 引入了一个新标志subquery_materialization_cost_based
。如果标志是on
(默认值),优化器在子查询实现和子查询转换之间执行基于成本的选择(IN -> EXISTS
如果可以使用任何一种方法)。如果标志是off
,优化器选择子查询实现而不是IN -> EXISTS
子查询转换,这是以前的行为。(漏洞 #13111584) 创新数据库;分区:
SELECT
来自没有主键的分区 的 AInnoDB
有时无法返回任何预期非空结果的行。在这种情况下,服务器还会返回错误 Can't find record intable_name
或 Incorrect key file for tabletable_name
。(漏洞 #13947868)InnoDB: 在配置InnoDB memached插件系统表时
INNODB_MEMCACHE.CONTAINERS
,使用逗号( “ , ”)和空格作为分隔符,将多列映射到一个memcached值。此修复允许竖线字符 ( “|
” ) 也用作定界符。(漏洞 #14560228)InnoDB: 在 Windows 系统上,由于 for 的值不正确而导致的文件访问错误
MYSQL_DATADIR
可能会导致InnoDB
断言错误。重新启动 MySQL 后错误可能仍然存在。(漏洞 #14558324)InnoDB: 将不同记录长度的数据插入到 使用压缩
InnoDB
的表中 可能会导致服务器因错误而停止。(错误#14554000、错误#13523839、错误#63815、错误#12845774、错误#61456、错误#12595091、错误#61208)InnoDB:
innodb_checksum_algorithm
在 MySQL 5.6 开发周期中被短暂更改为crc32 的默认值, 在降级到早期 MySQL 版本期间被切换回以innodb
提高数据文件的兼容性InnoDB
(漏洞 #14525151)InnoDB: 在
ALTER TABLE
重建表的过程中,特别是 ,ADD COLUMN
,DROP COLUMN
存在一些与FULLTEXT
索引相关的断言失败,特别是对于包含多个FULLTEXT
索引的表。该修复 根据索引ALTER TABLE
正确使用或不使用在线 DDL 。FULLTEXT
如果一个表有一个FULLTEXT
被删除的索引,那么由于隐藏FTS_DOC_ID
列,对该表的联机 DDL 的任何限制仍然存在。(漏洞 #14488218)-
InnoDB: 在某些条件下,
innodb_io_capacity_max
配置选项现在使用以下公式计算默认值:innodb_io_capacity_max = max(2000, innodb_io_capacity * 2)
该公式仅在您为
innodb_io_capacity
at server startup 指定值而不为 指定值时生效innodb_io_capacity_max
。innodb_io_capacity
为动态使用SET
语句设置值时不使用公式 。(漏洞 #14469086) InnoDB: 在并发 DML和查询的重负载下,
InnoDB
具有唯一索引的表可能会向查询返回不存在的重复行。(错误#14399148,错误#66134)InnoDB: 语法
ALTER TABLE ... DROP FOREIGN KEY ... ALGORITHM=COPY
错误地认为 外键名称区分大小写。(漏洞 #14394071)InnoDB: 当在线 DDL 操作期间检测到错误(例如重复键错误)时,在构建索引时应用对表所做的更改时,如果同一
ALTER TABLE
语句还包含任何DROP INDEX
子句,则 MySQL 可能会遇到断言错误。(漏洞 #14392805)-
InnoDB: 当 InnoDB 表具有系统选择的 主键时,基于不可空列上的唯一索引,如果其中一个主键列被更改为可空,则会发出错误。消息是:
Warning 1082 InnoDB: Table table_name has a primary key in InnoDB data dictionary, but not in MySQL!
此问题仅影响
ALTER TABLE
使用 在线 DDL机制的语句,即带有ALGORITHM=INPLACE
指定或暗示的子句。(漏洞 #14353985) InnoDB:
InnoDB
针对 具有索引的表 的繁重查询工作负载FULLTEXT
可能会导致崩溃。该问题仅发生在每秒一定数量的查询和一定数量的并发连接上。(漏洞 #14347352)InnoDB: 如果联机操作失败,并发 DML
CREATE INDEX
操作可能会在短时间内 失败,因为表被认为处于错误状态。(漏洞 #14341099)InnoDB:
ALTER TABLE
分区表的语句可能会导致不必要的 锁定和 撤消信息。作为新的在线 DDL 功能的一部分,MySQL 在可行时将此开销降至最低,或者您可以ALGORITHM=INPLACE
在语句中指定子句ALTER TABLE
。(漏洞 #14322667)-
InnoDB: 该
mysql_install_db
命令可能会因断言错误而崩溃:InnoDB: Assertion failure in thread thread_num in file trx0rseg.cc line 326
系统表空间的大小
InnoDB
上限为 10MB,但在 5.6 开发周期中,系统表空间的最小大小变得略大于 10MB。(漏洞 #14315223) InnoDB:
DROP TABLE
竞争条件可能会在表的语句 期间导致断言错误InnoDB
。某些内部InnoDB
函数无法正确确定表空间是否丢失;如果缺少表空间,其他函数无法正确处理错误代码。(漏洞 #14251529)InnoDB:
InnoDB
当在同一事务中创建和访问 多个ER_TABLE_DEF_CHANGED
错误。(漏洞 #14234581)-
InnoDB:
SERIALIZABLE
服务器可能因具有隔离级别 的事务FLUSH TABLES ... WITH READ LOCK
和后续查询的组合而崩溃。错误信息是:InnoDB: Failing assertion: prebuilt->stored_select_lock_type != LOCK_NONE_UNSET
(漏洞 #14222066)
InnoDB: 在就地操作的重建阶段回滚的聚簇索引条目
ALTER TABLE
未从二级索引中删除。(漏洞 #14221812)InnoDB:此修复解决了使用在线 DDL(即,使用
AUTO_INCREMENT
添加列时 有关列的几个问题 。现在该 值已正确使用,下一个值的计算已得到纠正, ,, 和无符号自动增量值已得到正确处理,并检测到溢出情况。(漏洞 #14219624)ALGORITHM=INPLACE
AUTO_INCREMENT_OFFSET
FLOAT
DOUBLE
INTEGER
InnoDB: 使用 MySQL 5.6在线 DDL功能,向
ALTER TABLE
表添加主键的语句InnoDB
可以成功,即使主键列包含重复值。(漏洞 #14219515)InnoDB: 此修复可防止在线 DDL操作与在同一表上同时发生的外键操作发生冲突 当在线 DDL 正在进行时,基于外键定义中的
CASCADE
或更新或删除语句完成后所需的信息将不可用(漏洞 #14219233)SET NULL
ROLLBACK
ALTER TABLE
InnoDB: 如果使用语句创建XA
SHOW ENGINE...STATUS
事务,命令可能会崩溃。(漏洞 #14218867)START TRANSACTION READ ONLY
InnoDB: 如果只读事务在包含
InnoDB
临时表的会话中被终止,服务器可能会崩溃。(漏洞 #14213784)-
InnoDB: 在线DDL
INSERT
操作失败后进入表 可能会导致错误的断言错误:InnoDB: Failing assertion: prebuilt->trx_id == 0 || prebuilt->trx_id <= last_index->trx_id
(漏洞 #14176821)
InnoDB:如果先前活动事务的回滚与临时表的删除发生冲突, 服务器可能会在启动时挂起,在 崩溃恢复期间。通过此修复, 持久统计信息不适用于
InnoDB
临时表。(漏洞 #14175080)InnoDB: 配置选项
innodb_max_io_capacity
重命名为innodb_io_capacity_max
,以强调它与现有innodb_io_capacity
选项的关系。(漏洞 #14175020)InnoDB: 如果 DDL 遇到错误,添加外键 的在线 DDL操作可能会错误地分配一些内存。(漏洞 #14156259)
InnoDB: 由于在计算索引统计信息时出现竞争条件,服务器可能会因信号 8(被零除错误)而崩溃。(漏洞 #14150372)
InnoDB: 当自增列使用a
FLOAT
或DOUBLE
数据类型时,如果自增值变得非常大(大于最大值unsigned long long
),则后续插入可能会失败或导致服务器停止。(缺陷 #14145950,缺陷 #55071)InnoDB:
InnoDB
从包含 前缀索引 的表中删除,然后删除索引,可能会导致崩溃并出现断言错误。(漏洞 #13807811)InnoDB:表 的
NUMBER_PAGES_CREATED
和NUMBER_PAGES_WRITTEN
列的INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS
值设置为不正确的值,并且NUMBER_PAGES_GET
根本没有设置该列。(漏洞 #13639187)-
InnoDB: 针对失败的情况改进了错误消息,
UPDATE
因为该行包含多个 BLOB 值,每个值都大于 768 字节,导致行的大小超过 页面大小的一半。旧消息具有误导性;它建议使用 BLOB,当每个 BLOB 列的 768 字节前缀是限制错误的原因时:Error Code 1118: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
该问题的解决方法是使用
ROW_FORMAT=DYNAMIC
orROW_FORMAT=COMPRESSED
子句创建表,现在在消息中建议这样做。(缺陷 #13453036,缺陷 #63507) InnoDB: 更新非常大的 BLOB 值(通常为 16MB 或更大)时,服务器可能会崩溃。(漏洞 #13450566)
InnoDB:锁定机制 中的问题 可能会导致使用该
HANDLER
语句的查询出现严重错误。(缺陷 #11766271,缺陷 #59344)InnoDB: 当
SELECT ... FOR UPDATE
、UPDATE
或其他 SQL 语句InnoDB
中使用<
or<=
运算符WHERE
的行时,受影响范围之后的下一行也可能被锁定。此问题可能会导致预期不会被锁定的行的锁定等待超时。该问题发生在各种隔离级别下,例如READ COMMITTED
和REPEATABLE READ
。(漏洞 #11765218)InnoDB: 新的在线 DDL
ALTER TABLE
功能解决了语句导致不必要的表重建 的长期存在的错误 此特定错误适用于更改TIMESTAMP
列的默认值。(缺陷 #11753646,缺陷 #45124)InnoDB:针对涉及外键关系 表
ALTER TABLE
语句 ,清理了各种不一致的行为,包括表变得不可访问(缺陷 #11744929,缺陷 #5670)InnoDB
-
分区: 对于使用
PARTITION BY HASH
orPARTITION BY KEY
,当分区修剪机制使用分区键中的列遇到多范围列表或不等式时,它会继续使用下一个分区列并尝试使用它进行修剪,即使前一列不能使用。这导致可能与一个或多个先前分区列匹配的分区被修剪掉,留下仅与分区键的最后一列匹配的分区。满足以下两个条件时会触发此问题:
SELECT
构成表分区键的列的使用顺序与语句WHERE
子句在 分区键定义中的顺序与列定义中的顺序相同 ;分区键最后一列所用的
WHERE
条件仅由单个值满足,而测试分区键前一列的条件则由一系列值满足。
此处显示了创建分区表的语句示例和针对此查询发生上述问题的示例:
CREATE TABLE t1 ( c1 INT, c2 INT, PRIMARY KEY(c2, c1) ) PARTITION BY KEY() # Use primary key as partitioning key PARTITIONS 2; SELECT * FROM t1 WHERE c2 = 2 AND c1 <> 2;
一旦遇到无法在修剪中使用的分区键列,通过确保分区修剪跳过任何剩余的分区键列来解决此问题。(漏洞 #14342883)
-
分区: 当前从用于排序读取的每个分区读取的行的缓冲区在打开时分配,仅在分区处理程序关闭或销毁时释放。对于具有许多分区和大行的表上的 SELECT 语句,这可能会导致服务器使用过多的内存。
此问题已通过仅在需要时为分区表的读取分配缓冲区并在不再需要时立即释放它们来解决。作为此修复的一部分,现在分配内存以仅在尚未修剪的分区中读取行(请参阅 分区修剪)。(漏洞 #13025132)
参考资料:另请参阅:Bug #11764622、Bug #14537277。
复制;Microsoft Windows: 在 64 位 Windows 平台上,大于 4G 的
max_binlog_cache_size
和max_binlog_stmt_cache_size
系统变量值被截断为 4G。这导致LOAD DATA
在尝试加载大于 4G 的文件时失败,即使max_binlog_cache_size
设置的值大于此值。(漏洞 #13961678)-
复制: 更新写入用户变量,其值在使用时从未在从站上设置,
--replicate-ignore-table
可能会导致从站失败。(漏洞 #14597605)参考:这个问题是 Bug #14275000 的回归。
-
复制:在 MySQL 服务器的数据目录中 命名的手动创建的文件
slave_worker_info
可能会被误认为是实际的中继日志信息文件。此外,当工人数量(slave_parallel_workers
服务器系统变量)减少时,相应的信息文件没有按预期删除。(漏洞 #14578740)参考资料:另请参阅:Bug #13804728、Bug #14550905、Bug #14550945。
-
复制: 大于 0,将中继日志信息存储库类型更改为
relay_log_info_repository=FILE
并 重新 启动从属 mysqld导致后续 语句使从属崩溃。(漏洞 #14550945)slave_parallel_workers
TABLE
START SLAVE
参考资料:另请参阅:Bug #13804728、Bug #14550905、Bug #14578740。
-
Replication: 当多线程slave worker的数量(由设置
slave_parallel_workers
服务器系统变量决定)在使用时发生变化relay_log_info_repository=TABLE
,mysql.slave_worker_info
表没有反映出变化。(漏洞 #14550905)参考资料:另请参阅:Bug #13804728、Bug #14550945、Bug #14578740。
复制: 使用
COM_BINLOG_DUMP_GTID
不正确的数据可能会导致服务器崩溃。(漏洞 #14509140)复制:在未启用二进制日志记录的情况下 执行该
SQL_THREAD_WAIT_AFTER_GTIDS()
功能可能会导致服务器崩溃。(漏洞 #14457883)-
复制: MySQL 复制代码中的一个内部例程从用于存储数据库和工作线程之间映射的散列中删除元素,同时迭代散列。这可能会导致 has 元素的意外重新排序,从而可能导致使用此哈希的例程的结果不正确。(漏洞 #14381701)
参考资料:另请参阅:Bug #13864642。
复制: 二进制日志和中继日志性能模式互斥体的名称被错误地更改为与 MySQL 5.5 名称不同的名称。这些名称已恢复为 MySQL 5.5 中使用的名称。(漏洞 #14366314)
-
复制: 在使用 的主服务器和从服务器之间设置复制时
master_info_repository=TABLE
,mysql.slave_master_info
表在第一次START SLAVE
发布时没有更新。(漏洞 #14298750)参考资料:另请参阅:错误 #13858841。
复制: 该
--disable-gtid-unsafe-statements
选项导致任何涉及临时表的非事务性 DML 语句被拒绝并出现错误,即使binlog_format
明确设置为ROW
,尽管在这种情况下它们没有写入二进制日志。现在,在使用基于行的日志记录时允许使用此类语句,只要受语句影响的任何非事务表也是临时表即可。(漏洞 #14272627)复制: 当使用多线程从属时,
--replicate-rewrite-db
在将数据库分配给从属工作线程时不遵守规则,这可能会导致语句在使用此选项时乱序执行。这可能导致从站与主站不一致。(漏洞 #14232958)复制: 当服务器运行时mysql_upgrade
gtid_mode=ON
失败,--disable-gtid-unsafe-statements
因为 MySQL 系统表是使用MyISAM
. 通过更改mysql_upgrade的默认日志记录行为可以解决此问题 ;现在默认情况下禁用日志记录。( mysql_upgrade采取的操作 取决于服务器版本,因此不应复制到从服务器。)要启用日志记录,您可以 使用该 选项执行mysql_upgrade 。--write-binlog
(错误#14221043,错误#13833710)复制: 许多与 GTID 相关的内部编程对象的初始化和使用无法与
PERFORMANCE_SCHEMA
. (漏洞 #14152637)复制: 多线程从站的调度程序没有考虑到通过外键依赖隐式参与操作的数据库,这可能导致从站暂时失去一致性。为了避免这个问题,调用不同数据库表之间外键关系的主服务器上的复制事件现在被标记为可以按顺序安排它们以避免竞争条件,从而避免不一致。但是,这会对性能产生不利影响。(漏洞 #14092635)
-
复制: 使用多线程从站时,用于中继日志信息日志的存储库类型并不总是按预期自动用于工作存储库。(漏洞 #13804728)
参考资料:另请参阅:Bug #14550905、Bug #14550945、Bug #14578740。
复制: 当从站在等待下一个成功的作业被添加到工作队列时停止时,多线程从站协调器可能会泄漏内存。(漏洞 #13635612)
Replication:和 的
Master_id
列 显示的是slave的服务器ID,而不是master的服务器ID。(漏洞 #12344346)mysql.slave_master_info
mysql.slave_relay_log_info
-
复制: 诸如此类 的语句对于基于语句的日志记录被标记为不安全,尽管事实上此类语句实际上是安全的。在运行大量此类语句的情况下,这可能会导致磁盘空间耗尽,从而记录此类错误警告的数量。为了防止这种情况发生,引入了警告抑制机制。此警告抑制作用如下:每当最近的 50
UPDATE ... WHERE
primary_key_column
=constant
LIMIT 1ER_BINLOG_UNSAFE_STATEMENT
在任意 50 秒内生成警告超过 50 次,则启用警告抑制。激活后,这会导致此类警告不会写入错误日志;相反,对于这种类型的每 50 条警告,都会在错误日志中写入一条注释,说明. 只要最近 50 次此类警告在 50 秒或更短时间内发出,这种情况就会继续;一旦警告数量减少到低于此阈值,警告将再次正常记录。The last warning was repeated
N
times in lastS
seconds此问题的修复不会影响向 MySQL 客户端报告这些警告的方式;对于生成警告的每个语句,仍会向客户端发送警告。此修复程序也不对如何确定基于语句的日志记录的任何语句的安全性进行任何更改。(缺陷 #11759333,缺陷 #51638)
参考资料:另请参阅:Bug #11751521、Bug #42415。
ALTER TABLE ... DROP FOREIGN KEY
没有命名要删除的外键导致服务器崩溃。现在需要外键名称。(漏洞 #14530380)表的就地
ALTER TABLE
操作InnoDB
可能会引发试图获取锁的断言。(漏洞 #14516798)old_passwords
如果设置为 2(使用sha256_password
身份验证插件) , mysql_secure_installation将不起作用 (漏洞 #14506073)索引条件下推与降序索引范围扫描一起导致性能下降。(漏洞 #14503142)
Item_cache_str::save_in_field()
如果缓存的值为 ,则取消引用空指针NULL
。(漏洞 #14501403)GROUP BY ... WITH ROLLUP
使用运算符比较分组列 的查询IN
导致引发断言。(漏洞 #14500792)在启用半连接的调试版本中,
GROUP BY ... WITH ROLLUP
不使用临时表可能会导致服务器崩溃。(漏洞 #14499409)将连接缓存用于包含
IN
子查询的查询时引发断言,该子查询预期返回单行但返回多行。(漏洞 #14499331)当对索引列按降序进行分组和排序时,优化器可能会引发断言。(漏洞 #14498999)
带孔的多边形可能导致空间操作的服务器崩溃。(漏洞 #14497827)
对于复杂的条件,优化器可能会生成不正确的范围构造并返回不正确的查询结果。(漏洞 #14497598)
在
mysql_com.h
中,CLIENT_CONNECT_ATTRS
和CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA
符号被错误地定义为相同的值。(漏洞 #14482472)Threads_running
状态变量未正确更新 。(漏洞 #14471011)GROUP_CONCAT()
withDISTINCT
或ORDER BY
onGEOMETRY
值导致服务器崩溃。(漏洞 #14468106)STRONG
使用100 个或更多字符 的密码策略和密码,VALIDATE_PASSWORD_STRENGTH()
可能会导致服务器崩溃。(漏洞 #14458293)PASSWORD(NULL)
并OLD_PASSWORD(NULL)
可能导致服务器崩溃。(漏洞 #14458217)系统
explicit_defaults_for_timestamp
变量不可见(例如,带有SHOW VARIABLES
),因此无法根据其值做出运行时决策。(漏洞 #14409088)解析外部字段时, 为准备语句的每次执行
Item_field::fix_outer_fields()
创建新Item_ref
的 s,因此这些必须在运行时 memroot 中分配。解析之前的 memroot 切换JOIN::having
导致它们在语句根中分配,从而为每个准备好的语句执行泄漏内存。(漏洞 #14409015)一个
ALTER TABLE
用于InnoDB
尝试添加索引并更改参与该索引的列的可空性的表引发了断言。(漏洞 #14404635)对于调试构建,如果一个会话使用 DDL 语句来更改
InnoDB
表,而另一个会话如果具有表的更改前一致快照,则可能会引发断言失败。(漏洞 #14365043)结果集可能包含额外的行,用于对 使用修饰符和子查询的
MyISAM
表 进行查询。SQL_BUFFER_RESULT
(漏洞 #14348858)mysql 的
--server-public-key
选项 已重命名为以反映它引用文件并与相关的服务器端变量命名保持一致。此外,此选项现在仅在使用 OpenSSL(而非 yaSSL)构建 MySQL 时可用,因为 yaSSL 不支持必要的 RSA 加密。(漏洞 #14348721)mysqltest
--server-public-key-path
RPM 规范文件现在还在新二进制文件上运行测试套件,然后再打包它们。(漏洞 #14318456)
在存储程序内部,对 XML 函数中存储程序变量的引用在存储程序
ExtractValue()
首次执行后失败。(漏洞 #14317442)使用的性能模式默认为表中的阶段和语句列出了纳秒计时器
setup_timers
。但是,如果此计时器在给定平台(例如 Windows)上不可用,则阶段和语句的计时将无法工作。现在,如果空闲、阶段和语句计时器可用,则使用首选计时器,但如果不可用,则使用备用计时器。(漏洞 #14298586)ref
如果按降序读取索引 ,则优化器将索引条件下推与访问结合使用的某些查询 可能会非常慢。(错误#14287654,错误#14503142)使用 MaterializeScan 半连接策略和物化子查询执行的查询可能会返回太多行。(漏洞 #14272788)
LooseScan 半连接可以从外表返回重复的行。(漏洞 #14271594)
Performance Schema 在选择数据库之前和之后为一条语句生成了不同的摘要。(漏洞 #14256311)
性能模式摘要生成代码可能因竞争条件而失败。(漏洞 #14250296)
服务器未使用gcc 4.7 构建。(漏洞 #14238406)
优化器跟踪可能会在尝试打印释放的子查询项时崩溃。(漏洞 #14238404)
启用半连接优化后
WITH CHECK OPTION
,视图定义子句中的子查询计算不正确。(漏洞 #14230177)ALTER SERVER
,CREATE SERVER
, 和DROP SERVER
空服务器名称导致服务器崩溃。(漏洞 #14220942)ALTER TABLE
有DISCARD TABLESPACE
或IMPORT TABLESPACE
没有获得足够强的元数据锁来防止并发ALTER TABLE
语句使用ADD
或DROP
修改表空间。这可能会导致警告或提出断言。(漏洞 #14213236)WEIGHT_STRING()
如果给定错误的标志参数,可能会崩溃。(漏洞#14211236)REQUIRE ISSUER
语句的子句GRANT
没有为日志记录正确重写并导致服务器崩溃。(漏洞 #14211069)如果调用
socket()
失败,Performance Schema 无论如何都会为它创建检测。(漏洞 #14209598)一些带有
HAVING
子句的查询带有一个函数,该子句引用WHERE
列表中的一个函数,子查询作为参数导致引发断言。(漏洞 #14209318)字符串分配可能导致 Valgrind 警告。(漏洞 #14201818)
对于使用范围访问的查询,优化器可以读取未初始化的数据,从而导致 Valgrind 警告。(漏洞 #14200538)
mysql_upgrade没有 数据库中的表
STATS_PERSISTENT=0
表选项 (漏洞 #14195056)InnoDB
mysql
在调试版本中,优化器提出了关于
MyISAM
密钥长度的不必要(过于严格)的断言。(漏洞 #14179461)连接处理可能会尝试清理尚未实例化的临时表,从而导致服务器崩溃。(漏洞 #14168270)
字符串格式日期的不正确内部转换可能会导致服务器崩溃。(漏洞 #14167911)
对于JSON格式的
EXPLAIN
语句,派生表处理不当导致服务器崩溃。(漏洞 #14167499)在调试版本中,比较具有
ucs2_unicode_520_ci
排序规则的字符串可能会引发断言。(漏洞 #14161973)就地
ALTER TABLE
对具有GEOMETRY
列的表不起作用,即使更改不涉及该列。(漏洞 #14140927)对于不存在的文件,Performance Schema 文件 I/O 检测有时会做额外的工作或受到检测泄漏的影响。(漏洞 #14113704)
小
sort_buffer_size
值可能会导致服务器崩溃。(漏洞 #14111180)在触发器中,对查询执行过程中使用的临时表的引用可能最终指向后续执行中不存在的字段,从而导致服务器崩溃。(漏洞 #14105951)
buffer_pool_pages_in_flush
对于表中行中的 某些列,可能会错误地报告负值information_schema.innodb_metrics
。(漏洞 #14090287)JSON
-formatEXPLAIN
语句可能会引发断言或导致服务器挂起带有 impossible-WHERE
子句和ORDER BY
orGROUP BY
子句中的子查询的语句。(漏洞 #14084642)半连接的 FirstMatch 策略为某些具有多个内部表的查询生成了不正确的结果。(漏洞 #14081638)
启用物化和半连接后,某些具有 OR 条件的查询可能会产生不正确的结果。(漏洞 #14075016)
就地
ALTER TABLE
不处理自动分区存储引擎,例如NDB
. (漏洞 #14063233)RELEASE SAVEPOINT
没有对 XA 事务状态进行充分检查以防止在事务处于准备状态时释放保存点。(漏洞 #14062726)CREATE SERVER
、DROP SERVER
和的 错误处理不当ALTER SERVER
可能引发断言。(漏洞 #14061851)空间函数的不正确初始化可能会导致服务器在服务器启动后首次调用时崩溃。(漏洞 #14015762)
对于 JSON 格式的
EXPLAIN
语句,子查询处理不当可能会引发断言。(漏洞 #13956275)SELECT
在使用连接缓冲区的分区表上可能会导致服务器崩溃。(漏洞 #13949549)按空间函数进行的多边形排序可能会错误地完成并导致服务器崩溃。(漏洞 #13938850)
对于
DELETE
语句,WHERE
仅应访问索引树的子句行检索可以引发断言。(漏洞 #13919180)for 的参数
LIMIT
必须是整数,但是如果参数是由预准备语句中的占位符给出的,服务器不会拒绝非整数值,例如'5'
. (漏洞 #13868860)一些参数可能会导致
ST_Buffer()
崩溃。(漏洞 #13832749,漏洞 #13833019)当参数列具有空间索引时 ,使用
ST_Contains
和函数的查询会产生不正确的结果。Within()
(漏洞 #13813064)CHECK TABLE
如果表的和 文件中的 键定义不同,REPAIR TABLE
则可能会崩溃。现在服务器产生错误。(漏洞 #13555854).frm
.MYI
MyISAM
-
优化器对松散索引扫描更可取的情况使用了完整索引扫描。(漏洞 #13464493)
参考:这个问题是 Bug #12540545 的回归。
-
COUNT(DISTINCT(SELECT 1))
如果优化器使用松散索引扫描,则可能会被错误评估。(漏洞 #13444084)参考资料:另请参阅:Bug #13813126。
FEDERATED
当基础表在两列上有复合索引并且查询包含AND
列上的条件时,表 查询可能会返回不正确的结果。(漏洞#12876932)在调试版本中,
InnoDB
关于禁止开放范围的断言过于激进。(缺陷 #66513,缺陷 #14547952)如果服务器主机支持 IPv6,则启动服务器
bind_address=*
应该会导致服务器在所有服务器主机 IPv6 和 IPv4 接口上接受 TCP/IP 连接,否则在所有 IPv4 地址上接受 TCP/IP 连接。但服务器有时无法正确检测到不支持 IPv6 时,无法启动。(漏洞 #66303,漏洞 #14483430)如果结果包含 ,则 带有
ALL
over a 的 查询UNION
可能会返回不正确的 结果。(缺陷 #65902,缺陷 #14329235)UNION
NULL
ALTER TABLE
使用复制算法使用键前缀 就地错误处理索引。(缺陷 #65865,缺陷 #14304973)ST_Contains()
和 函数 在Within()
具有SPATIAL
索引的列上使用时产生了不正确的结果。(错误#65348,错误#14096685)对于某些查询,优化器
index_merge
在工作量大于ref
访问量时使用访问方法。(缺陷 #65274,缺陷 #14120360)如果 SRID 参数是 ,
GeomFromWKB()
函数不会返回,并且转换结果中不包含非SRID 值。(缺陷 #65094,缺陷 #13998446)NULL
NULL
NULL
内部临时
MyISAM
表不必要地注册在受全局互斥锁保护的开放表列表中,导致过度的互斥锁争用。(漏洞 #65077,漏洞 #14000697)在准备好的语句中,
MYSQL_TYPE_DATE
参数在转换为整数时被作为MYSQL_TYPE_DATETIME
值处理,并且转换产生了不正确的结果。(错误#64667,错误#13904869)对于本应合法的字符串之间的某些操作,返回了“ Illegal mix of collation ”错误。(缺陷 #64555,缺陷 #13812875)
-
COUNT(DISTINCT(IF ...))
如果优化器使用松散索引扫描,则可能会被错误评估。(缺陷 #64445,缺陷 #13813126)参考资料:另请参阅:Bug #13444084。
该
--ssl-key
选项的参数未验证是否存在并且是有效密钥。生成的连接使用 SSL,但未使用密钥。(缺陷 #62743,缺陷 #13115401)使用基于语句的二进制日志记录,访问但不修改表的存储例程对表的锁太强,不必要地阻止也访问这些表的其他语句。(缺陷 #62540,缺陷 #13036505)
包含视图的数据库的mysqlhotcopy失败。(错误#62472、错误#13006947、错误#12992993)
LIMIT
向包含GROUP BY
and的查询 添加子句ORDER BY
可能会导致优化器选择不正确的索引来处理查询,并返回比所需更多的行。(错误#54599,错误#11762052)当标准输入是管道时, mysqlbinlog不接受标准输入上的输入。(缺陷 #49336,缺陷 #11757312)
使用
GROUP BY
和 的查询出现性能回归COUNT(DISTINCT)
。(缺陷 #49111,缺陷 #11757108)mysqldump可以按照这样的顺序转储视图和它们所依赖的表,从而在重新加载转储文件时发生错误。(错误#44939,错误#11753490)