MySQL 8.0版本说明/ MySQL 8.0.12的更改(2018-07-27,通用可用性)

MySQL 8.0.12的更改(2018-07-27,通用可用性)

有关升级、降级、平台支持等的一般信息,请访问https://dev.10bet靠谱mysql.com/doc/relnotes/mysql/8.0/en/

审计日志记录

  • 对于新的MySQL安装,用户而且宿主audit_log_user表使用的MySQL企业审计现在有更好的定义对应的用户而且宿主mysql.user系统表。

    对于已经安装了MySQL Enterprise Audit的安装的升级,建议按照以下方式修改表定义:

    ALTER TABLE mysql。audit_log_userDROP FOREIGN KEY audit_log_user_ibfk_1; ALTER TABLE mysql.audit_log_filter CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci; ALTER TABLE mysql.audit_log_user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci; ALTER TABLE mysql.audit_log_user MODIFY COLUMN USER VARCHAR(32); ALTER TABLE mysql.audit_log_user ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);

    (错误# 23706056)

编译的笔记

  • 微软的Windows操作系统:对于OpenSSL 1.1, Windows上的库名称已经更改。的CMake配置代码现在负责这一点。此外,它现在可以在Windows上使用-DWITHOUT_SERVER = 1构建32位客户端二进制文件。(Bug #28170711, Bug #91223)

  • 用于服务器构建的Boost库的最低版本现在是1.67.0。(错误# 27866110)

配置说明

  • 这些性能架构系统变量的最大值从256增加到1024:

    Performance_schema_max_cond_classes performance_schema_max_file_classes performance_schema_max_mutex_classes performance_schema_max_rwlock_classes performance_schema_max_socket_classes performance_schema_max_stage_classes performance_schema_max_thread_classes

    Performance Schema系统变量的默认值从250增加到300:

    performance_schema_max_mutex_classes

    (错误# 27647918)

  • RelWithDebInfo构建在Linux上,REPRODUCIBLE_BUILD现在默认为.(错误# 27483447)

  • 的默认值slave_pending_jobs_size_max系统变量从16M增加到128M。在多线程从服务器上(使用slave_parallel_workers > 0),该值设置了可用于保存尚未应用的事件的从工作队列的最大内存量。在计算部署多线程从库所需的资源时,应该考虑到可能更大的内存使用量。主线程和单线程从线程不受此设置的影响。

    控件指定的最近增加的默认值的两倍max_allowed_packet系统变量(现在是64M)。的价值slave_pending_jobs_size_max是一个软限制,因此大于其值(由一个或多个包组成)的事件可以排队和处理。但是,在所有从工作线程都有空队列之前,一个大型事务将被保存,然后再进行处理。所有后续事务都被保留,直到大事务完成。清除所有从worker队列的延迟和对后续事务排队的等待会导致复制从端的延迟,并降低从worker的并发性。的价值slave_pending_jobs_size_max因此应该设置足够高,以适应大多数预期的事件大小。

数据字典的笔记

  • 引入了以下数据字典增强功能:

    • 添加了一个内部方法来防止全局读锁。在存储、更新或删除数据字典对象之前调用该方法。

    • 断言代码被添加到数据字典API中,以在存储、更新或删除数据字典对象时防止全局读锁。

    • 当存储引擎获取排他元数据锁时,现在可以隐式地获得针对备份锁和全局读锁的保护。

    • 现在在释放成本模型条目之前执行成本模型缓存有效性检查。

    • 添加了一个数据字典API函数,用于提交和回滚事务,以及释放事务元数据锁。

    (错误# 27937059)

防火墙的笔记

  • MySQL企业防火墙firewall_whitelist表现在包含名为ID.(错误# 27164826)

功能和操作说明

日志记录笔记

  • 以前,成功分配给dragnet.log_error_filter_rules系统变量导致一个Note和一个非零的警告计数。为了避免为成功的操作生成诊断,将不再生成此Note。相反,法网。状态可以参考状态变量来确定最近赋值的结果dragnet.log_error_filter_rules.(Bug #27910708, Bug #90571)

  • 以前,日志组件列出log_error_services系统变量必须用分号分隔。组件现在可以用逗号分隔。给定的设置不能同时使用分号和逗号分隔符。(Bug #27788925, Bug #90268)

优化器的笔记

  • filesort算法(由优化器用来满足命令子句在没有索引可以使用的情况下)现在内存效率更高。方法所指示的大小,优化器根据需要增量地分配内存缓冲区sort_buffer_size系统变量,而不是分配一个固定的量sort_buffer_size字节。这使用户可以设置sort_buffer_size以加速较大的排序,而不必担心小排序会占用过多的内存。(对于Windows上的多个并发排序,这个好处可能不会出现,因为Windows有一个弱多线程malloc.)

    此外,filesort对最坏的情况不那么悲观。在此之前,filesort如果合并操作或排序键生成可能失败,则产生未启动的错误。现在,因为最坏的情况不太可能在实践中发生,filesort只对实际的而不是预期的故障产生错误。

  • 此前,扩展解释产出只是为了选择语句。现在生成扩展输出插入取代更新,删除语句。(要显示扩展输出,请使用显示警告解释.看到扩展的EXPLAIN输出格式.)

包装的笔记

  • 对于Linux,通用的二进制分布压缩算法由Gzip变为XZ;文件扩展名从。tar.gz变为。tar.xz。(Bug #28450941, Bug #91889)

  • Docker默认禁用numa相关操作,因此mysqld包括在Docker映像现在已禁用NUMA支持,以便错误日志不充满NUMA警告。(错误# 28081363)

  • RPM.spec文件已经更新,以反映删除了yaSSL,并且OpenSSL是所有版本的默认SSL库。(错误# 28025427)

  • 对于通用Linuxgz分布,mysqlxtest客户端已从服务器包移动到测试包。(错误# 27744137)

  • 在Oracle Linux 7上安装MySQL Server的ARM 64位(aarch64)二进制文件的RPM包现在可以在MySQL Yum Repository中直接下载。

    这个ARM版本的已知限制:必须启用Oracle Linux 7软件集合存储库(ol7_software_collections)才能安装此包,还必须调整libstdc++7路径。看到好吃的特定于平台的笔记额外的细节。

插件的笔记

安全记录

空间数据的支持

  • 不兼容的更改:新的空间功能ST_Longitude ()而且ST_Latitude ()分别返回它们的经度或纬度论点。如果使用第二个实参调用,这些函数将使用实参分别设置它们的经度或纬度论点。

    此外,ST_X ()而且ST_Y ()函数现在解释它们的参数根据其空间参考系统定义(SRS):

    • ST_X ()返回在SRS定义中最先出现的轴的坐标值,并且ST_Y ()返回在SRS定义中第二出现的轴的坐标值。

    • 如果ST_X ()而且ST_Y ()的经度或纬度参数具有地理SRS,则经度或纬度值必须在SRS的适当范围内,否则会发生错误。

    请注意

    如果空间数据包含几何值,现在由ST_X ()而且ST_Y (),与以前的MySQL版本相比,使用这些函数的现有查询将返回不同的结果。

    (Bug #27125600, Bug #88503)

  • 包含空间计算空间参考系统数据的EPSG数据集已从9.2版本升级到9.3版本。(错误# 27977721)

  • 接受几何参数并先前返回的空间函数ER_LONGITUDE_OUT_OF_RANGEER_LATITUDE_OUT_OF_RANGE现在返回超出范围的经度或纬度值的错误ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGEER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE代替。这不适用于解析或修改几何图形的空间函数:ST_xxxFromText ()ST_xxxFromWKT ()ST_xxxFromWKB ()ST_GeomFromGeoJSON ()ST_X ()ST_Y ()ST_Longitude (),ST_Latitude ().(错误# 27892138)

  • 以前,解析器进行识别使用RTREE在索引规范中,但这不能为任何存储引擎指定。现在使用RTREE用于空间索引规范。(错误# 27836608)

  • 几何列上的索引现在必须是空间索引。因此,空间关键字是可选的,但对于在空间列上创建索引是隐式的。对于主键或唯一索引,不允许在几何列上建立空间索引。同时,ASC而且DESC不允许用于空间索引。(错误# 21087676)

SQL语法笔记

  • 重要的变化:MySQL现在允许查询具有与汇总修饰符使用截然不同的.看到SELECT语句,以查询更多资料。(Bug #87450, Bug #26640100, Bug #20671578, Bug #76229)

  • 重要的变化:MySQL现在允许使用命令具有分组功能选择.语句。(Bug #86312, Bug #27063525)

  • 重要的变化:MySQL现在允许命令的查询中使用与汇总修饰符。有关更多信息,请参见SELECT语句.(Bug #86311, Bug #26073513)

  • 显式的ASCDESC限定符为集团子句现在已弃用,并将在未来的MySQL版本中删除。

X插件笔记

  • 从MySQL 8.0.11服务器返回到X Plugin客户端的身份验证错误被标记为致命的,这导致客户端停止尝试使用不同方法的自动身份验证尝试序列。X Plugin现在忽略致命的身份验证错误,以及后续预期的错误,如写超时错误,而身份验证尝试的顺序正在进行中。如果尝试的身份验证方法都不成功,X Plugin现在选择并返回从服务器接收到的最相关的错误消息,这并不一定是接收到的最后一个错误消息。(错误# 28135006)

  • 在X Plugin自动身份验证序列中,使用预先设置的序列中的不同身份验证方法进行连接尝试。X Plugin在启动序列之前检查连接是否使用SSL,并且不尝试连接平原如果连接未加密,则验证方法。为了进行额外的验证,添加了一个检查和错误平原如果连接未加密,则不允许尝试身份验证方法。(错误# 27691189)

  • 如果身份验证失败,X Plugin总是返回错误代码ER_ACCESS_DENIED,带有针对错误情况的自定义X协议错误消息。从MySQL服务器接收到的用于身份验证失败的错误代码现在被传递到客户机,并附带标准的MySQL错误消息。(错误# 27675699)

  • 在X Plugin自动身份验证序列中,连接尝试是按照预先设置的顺序使用不同的身份验证方法进行的,在每次失败的连接尝试之后,都会用严重性标记返回的错误致命的.现在,错误被标记为错误虽然仍然有其他身份验证方法要尝试,但只有导致断开连接的最后一个错误被标记为致命的.(错误# 27636947)

  • X Plugin代码用不同的预处理器定义编译了两次。(错误# 27267054)

  • X Plugin在处理认证问题方面做了一些改进:

    • 如果错误响应指示连接已断开或读或写超时,X Plugin自动身份验证序列(使用预先设置的顺序中的不同身份验证方法进行连接尝试)现在将停止。

    • 如果出现任何致命错误,自动身份验证序列现在也会停止。

    • 现在报告的最后一个重要错误是废弃的身份验证序列,而不仅仅是发生的最后一个错误。

    • 方法进行身份验证时,将报告更具体的错误代码和消息caching_sha2_password在不安全的连接上尝试身份验证插件。

    (错误# 27257774)

  • 在某些情况下,加载了X Plugin的MySQL服务器可能会在由启动失败或重新启动命令。这个问题现在已经解决了。(Bug #25474793, Bug #27259783)

增加或更改的功能

  • 重要的变化;复制:使用group_replication_exit_state_action选项配置当服务器实例非自愿地离开组时(例如,当服务器实例由于网络连接不稳定而被逐出组时),组复制的行为。当group_replication_exit_state_action被设置为ABORT_SERVER(默认值)时,实例自动关闭,当group_replication_exit_state_action被设置为READ_ONLY实例本身切换到超级只读模式,并进入组复制错误状态。

  • InnoDB:InnoDB现在支持算法=即时为以下ALTER TABLE操作:

    • 添加一个列。这个特性被称为即时添加一列

    • 添加或删除虚拟列。

    • 添加或删除列默认值。

    • 修改对象的定义枚举列。

    • 更改索引类型。

    • 重命名表。

    支持的操作算法=即时只修改数据字典中的元数据。在操作的准备和执行阶段,表上没有独占元数据锁,表数据不受影响,因此操作是瞬时的。如果没有明确指定,算法=即时默认情况下由支持它的操作使用。如果算法=即时指定但不支持,则操作立即失败并出现错误。

    有关支持的操作的详细信息算法=即时,请参阅在线DDL操作

    感谢腾讯游戏DBA团队的贡献。(Bug #28100103, Bug #91074)

  • InnoDB:对于大对象(LOB)数据的小更新,现在支持撤消日志记录,这提高了大小不超过100字节的LOB更新的性能。以前,LOB更新的大小至少是一个LOB页面,这对于可能只修改几个字节的更新来说不是最优的。这种增强建立在MySQL 8.0.4中增加的对LOB数据部分更新的支持之上。

  • 复制:您现在可以使用shell管道来提供压缩二进制日志文件的归档mysqlbinlog流的输入。以前,在将文件传递给mysqlbinlog.感谢Facebook团队的贡献。

    在这个例子中,binlog-files_1.gz包含多个用于处理的二进制日志文件。的内容binlog-files_1.gz,通过管道将二进制日志文件传输到mysqlbinlog作为标准输入,和管道的输出mysqlbinlogmysql客户端执行:

    Gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p .gz

    (Bug #27445278, Bug #89423)

    参考文献:参见:Bug #27836543。

  • 复制:SYSTEM_VARIABLES_ADMIN而且PERSIST_RO_VARIABLES_ADMIN权限已添加到mysql.session保留帐户。(Bug #89873, Bug #27621869)

  • 复制:关于XCom内存使用情况的信息已添加到Performance Schema表中。的setup_instruments表现在有一个对应于XCom缓存的条目memory_summary_global_by_event_name表包含XCom缓存的内存使用统计信息。

  • 微软的Windows操作系统:在Windows上,该分叉用于实现重新启动使用——广东发展银行选择。但是,这是一个副作用,是在设置调试环境的其他选项操作之外执行的。在非调试设置中,新的——无显示器选项可用于抑制监视进程的分叉的唯一目的。对于以任何一种方式开始的服务器——广东发展银行——无显示器、执行重新启动导致服务器直接退出而不重新启动。(错误# 27801043)

  • 通过检查外键关系删除表而且删除数据库是改善。现在,在删除任何表之前进行检查,以便在出现问题时,在进行任何更改之前,语句会失败。现在可以以任意顺序删除父表和子表,只要删除的顺序相同删除表声明。此外,对于试图删除父表而不删除子表的错误报告也得到了改进。(Bug #27821060, Bug #17564464, Bug #70531, Bug #22359539, Bug #79610)

  • 当添加对角色的支持时,管理关键字成为保留关键字。管理现在又是一个非保留关键字。(错误# 27814204)

  • 当客户机关闭服务器时,服务器现在会向错误日志写入一条消息,指出是哪个用户执行了此操作。(Bug #26246628, Bug #86635)

  • 以前,——ssl-mode = VERIFY_IDENTITY选项,客户端检查用于连接的主机名是否匹配证书中的Common name值,而不匹配Subject Alternative name值。现在,如果客户端使用OpenSSL 1.0.2或更高版本,则客户端检查主机名是否与服务器证书中的Subject Alternative name值或Common name值匹配。感谢Daniël van Eeden提供了这个更改的补丁。(Bug #16211011, Bug #68052, Bug #27511233, Bug #89578)

错误修复

  • 重要的变化;JSON:JSON_TABLE ()函数现在自动解码base-64值并使用列规范提供的字符集打印它们。(Bug #90157, Bug #27729112)

    参考文献:参见Bug #89847, Bug #27613276。

  • InnoDB:添加的新列INFORMATION_SCHEMA。INNODB_TABLES而且INFORMATION_SCHEMA。INNODB_COLUMNS升级到8.0.12后,8.0.12中的表没有出现。(错误# 28065244)

  • InnoDB:存储在LOB索引项中的大对象(LOB)版本号在0处未初始化,而不是在1处初始化。(错误# 28046298)

  • InnoDB:向具有已生成列的表中添加列会引发无效断言。(错误# 28040201)

  • InnoDB:在检查点操作期间试图访问已释放的内存,导致服务器退出。(错误# 28039477)

  • InnoDB:在使用实验系统变量启动服务器时发生断言失败,这些变量在普通MySQL构建中无意地公开。(Bug #27899424, Bug #90526, Bug #27898396, Bug #90523, Bug #27898344, Bug #90522)

  • InnoDB:无效的系统变量设置引发断言。(错误# 27898284)

  • InnoDB:试图将一个表从废弃的文件表空间移动到共享表空间会引发断言。该操作现在产生一个错误。(错误# 27861972)

  • InnoDB:与大对象(lob)的页面分配相关的潜在故障没有得到充分处理。(错误# 27852003)

  • InnoDB:ngram全文搜索解析器允许逗号和句点字符标记为单词,这导致了布尔模式和自然语言模式搜索结果之间的不一致。逗号和句点字符不再被标记。(错误# 27847697)

  • InnoDB:校验和不匹配和其他问题是由并发修改表空间头页和试图在部分初始化的页上放置锁引起的。(错误# 27823064)

  • InnoDB:类返回的I/O错误fsync ()操作现在被视为硬错误。(Bug #27805553, Bug #90296)

  • InnoDB:在单个线程中,当另一个线程试图分配页面时,两个minitransaction锁住了一个大对象值(LOB)的第一页,从而导致死锁。(错误# 27777959)

  • InnoDB:升级到MySQL 8.0.12后,表列(包括FTS_DOC_ID列)从INFORMATION_SCHEMA。INNODB_COLUMNS表格(错误# 27774145)

  • InnoDB:当优化器选择在虚拟列上定义的前缀索引时,将引发无效断言。(错误# 27755892)

    这个问题是:Bug #19806106的回归。

  • InnoDB:在不适当的元数据锁定保护下,可能会打开被截断的表的内存表对象。

    一种新的保存方法AUTOINC的计数器值截断分区操作实施。(错误# 27754995)

  • InnoDB:在一个包含脏页但没有重做日志记录的小事务提交期间引发了一个断言。小事务没有等待最近关闭的缓冲区中的空间,随后用无效的当前LSN值标记该页。在将无效的LSN值添加到刷新列表后,延迟的小事务使用较早的LSN值添加脏页,破坏了刷新列表顺序。

    innodb_log_checkpoint_fuzzy_now增加了调试选项。启用此选项将强制执行InnoDB写一个模糊检查点。此外,增加了新的内部重做日志模块计数器,用于跟踪LSN值。的log_lsn_buf_dirty_pages_added计数器跟踪LSN值,直到脏页已添加到该值为止log_lsn_buf_pool_oldest_lwm计数器跟踪缓冲池中修改时间最长的块的低水位LSN。(错误# 27664539)

  • InnoDB:争用感知事务调度算法(CATS)跟踪等待另一个事务的事务数量。在死锁的情况下,计算等待事务数量的方法产生了虚值。(错误# 27646322)

  • InnoDB:试图取得InnoDB持有受害者事务锁时的票据导致了锁命令违反。(错误# 27626681)

    参考文献:这个问题是:Bug #23476050的回归。

  • InnoDB:在恢复期间,试图读取零长度的BLOB值会引发断言失败。BLOB值还没有完全插入。(错误# 27617389)

  • InnoDB:在获取已存在于内存中的表的表锁时,发生了争用条件。(Bug #27586419, Bug #27577704)

    这个问题是Bug #26848711的回归。

  • InnoDB:重新启动服务器后,试图创建加密表时,从存储引擎返回一个通用错误。(错误# 27577339)

  • InnoDB:使用带有空间索引的争用感知事务调度(CATS)会导致事务无限期地等待。(错误# 27572937)

  • InnoDB:包含多字节字符的表空间名称解析错误导致删除数据库操作失败。(错误# 27566937)

  • InnoDB:当数据字典试图打开分区表时,为标识临时表而执行的检查导致错误。(错误# 27565997)

  • InnoDB:导入表空间操作期间报告的模式不匹配错误未能以可读格式打印不匹配的表标志。(错误# 27542720)

  • InnoDB:日志含义DDL操作等待全文完成索引优化操作。(错误# 27326796)

    这个问题是Bug #24938374的回归。

  • InnoDB:中删除了对只读事务的不必要检查trx_set_rw_mode ()函数。感谢桑迪普·塞西亚的补丁。(Bug #27211287, Bug #88739)

  • InnoDB:添加了外键约束的DDL操作在访问属于父表的陈旧内存对象时抛出断言。(错误# 27208858)

  • InnoDB:的初始化后发生了失败的断言memcached获取操作。(错误# 26876594)

  • InnoDB:在外键检查期间遇到损坏的索引ID引发断言。(错误# 26654685)

  • InnoDB:一个删除表在操作的后ddl阶段检查索引状态时,对位于通用表空间中的表的操作抛出断言。(错误# 26523254)

  • InnoDB:DDL操作期间的内部死锁会导致长时间的信号量等待,然后是服务器退出。(错误# 26225783)

  • InnoDB:由于无效的锁升级,DDL操作遇到严重错误。(错误# 26225783)

  • InnoDB:在Windows 64位系统上,无效的缓冲池配置值导致服务器在启动时退出。(Bug #26100239, Bug #86370)

  • InnoDB:删除了与互斥锁类型定义相关的调试代码块。它不再区别于代码块的非调试版本。(Bug #24952279, Bug #83529)

  • InnoDB:由于日志解析缓冲区溢出,在恢复过程中发生服务器故障。现在将动态地为日志解析缓冲区分配空间,并根据需要增加空间,直到达到指定的大小innodb_log_buffer_size.(错误# 24734190)

  • InnoDB:通过避免表锁队列上代价高昂的迭代,对表锁定进行了优化,以实现同一表上的并发更新。

    感谢翟伟祥的贡献。(Bug #18955152, Bug #72948)

  • 包装:在Windows上,mysqld.exe——帮助命令在系统输出中显示不必要的和意外的详细信息,此修复将消除此问题。(错误# 27894020)

  • 分区:回滚的ALTER TABLE……截断分区语句没有被正确处理。(错误# 27603025)

    参考文献:参见Bug #87562, Bug #26710839。

  • 分区:对于分区表,在重建表或重新启动服务器后,分区更新时间可能不正确。(错误# 27073100)

  • 复制:如果选择——skip-log-bin在服务器启动时指定禁用二进制日志记录,如果两者都是expire_logs_days而且binlog_expire_logs_seconds设置为非零值。的——skip-log-bin选项意味着没有要过期的二进制日志文件,因此这些二进制日志过期时间设置的结果(即expire_logs_days价值被忽略)没有实际效果。但是,现在发出警告消息,以便在为服务器启用二进制日志记录之前纠正这种情况。(错误# 27699608)

  • 复制:当成员加入组失败时生成的日志消息已得到改进,例如当group_replication_group_name加入组的成员与种子的不匹配group_replication_group_name这在日志消息中进行了描述。(错误# 27628695)

  • 复制:如果MySQL服务器在崩溃恢复模式下启动innodb_force_recovery设置4个或更大的位置InnoDB进入只读模式时,不应初始化半同步复制主插件。由于MySQL 8.0中插件初始化顺序的变化,服务器认为如果插件已经注册,那么它也已经初始化了,并错误地试图反初始化它。这个插件在崩溃恢复模式下的处理现在已经被纠正,这样在插件未初始化时就不会执行去初始化函数。(错误# 27481872)

  • 复制:当复制过滤器或二进制日志过滤器应用于用XA事务更新的表时,它们可能会导致问题。对表的过滤可能导致复制从上的XA事务为空,因此不支持空XA事务。还有设置master_info_repository =表而且relay_log_info_repository =表在复制从服务器上(这在MySQL 8.0中成为默认设置),数据引擎事务的内部状态在经过筛选的XA事务之后更改,并且可能与复制事务上下文状态不一致。

    由于这些问题,不支持将复制过滤器或二进制日志过滤器与XA事务结合使用。此修复程序添加了新的错误ER_XA_REPLICATION_FILTERS,每当XA事务受到复制筛选器的影响时,无论该事务是否因此为空,都会记录该日志。如果事务不为空,则复制从可以继续运行,但是您应该采取措施停止对XA事务使用复制筛选器,以避免潜在的问题。如果事务为空,则复制从端停止。在这种情况下,复制从端可能处于不确定状态,在这种状态下复制进程的一致性可能会受到影响。特别是,gtid_executed设置在slave的slave上可能与设置在master上不一致。要解决这种情况,请隔离主服务器并停止所有复制,然后在整个复制拓扑中检查GTID一致性。撤消生成错误消息的XA事务,然后重新启动复制。(错误# 27442477)

  • 复制:mysqlbinlog当读取大于128KB的二进制日志事件时,读取失败,因为返回的是128KB的大小,而不是实际的大小。这个问题现在已经解决了。感谢Facebook团队的补丁。(Bug #27417084, Bug #89326)

  • 复制:当事务大于二进制日志事务缓存大小(binlog_cache_size)在处理过程中刷新到临时文件,由于临时目录中空间不足,刷新失败,未正确处理刷新错误。没有消息写入错误日志,事务回滚后也没有清除二进制日志缓存。现在,在这种情况下,服务器根据binlog_error_action设置(关闭服务器或停止日志记录),并向错误日志中写入消息。回滚事务时,服务器检查刷新错误,如果发生刷新错误,则清除二进制日志缓存。(Bug #27399620, Bug #89272)

  • 复制:当gtid用于复制时,从服务器上过滤掉的复制事务将被持久化。如果在从服务器上启用了二进制日志记录,则过滤掉的事务将作为Gtid_log_event后面是一个空事务,只包含开始而且提交语句。如果禁用二进制日志记录,则过滤掉的事务的GTID将写入mysql.gtid_executed表格这个过程确保了在执行的gtid集合中没有空白,并且如果从端重新连接到主端,则不会再次检索过滤掉的事务。以前,这个过程没有完成创建数据库修改数据库,删除数据库声明,但现在对这些声明以及其他声明也进行了审查。(Bug #27308751, Bug #88891)

  • 复制:在多线程从进程上,当停止奴隶语句在从服务器上执行,然后是开始的奴隶语句,错误日志可以在退出时报告从SQL线程的二进制日志中的不同位置,而不是在后续初始化时报告从SQL线程的位置。

    对于多线程从,在退出时为SQL线程报告的位置是一个低水位线,在此之前复制流是一致的,没有间隙。出现在该位置之前的事务被保证已提交,但出现在该位置之后的事务可能已提交或未提交。然而,这个低水位标记是在停止工作线程的进程实际执行之前报告的,并且在该进程中,低水位标记随后由检查点例程更新。现在已经更改了日志消息的时间,以便将最后的低水位标记报告为退出时SQL线程的位置。(错误# 27300658)

  • 复制:如果复制组运行的MySQL版本低于5.7.23,则无法在线升级。当一个运行MySQL 5.7.22或MySQL 8.0.11之前版本的成员试图加入一个运行MySQL 5.7.21或更早版本的成员的组时,它无法加入组,因为MySQL 5.7.21没有发送它的值lower_case_table_names系统变量。这意味着以后的版本比较lower_case_table_names变量的值无效,并退出了组。解决方法是让组离线,升级到5.7.23或8.0.12及更高版本。然后可以在不使组脱机的情况下执行组的后续升级。看到升级群复制.(Bug #90794, Bug #27991334)

  • 复制:gtid_purged变量包含已被服务器从日志中清除的二进制日志事件。当运行Group Replication插件时,这个变量不应该被修改,但这是可能的。现在,在运行组复制时无法修改该变量。(Bug #90146, Bug #27724561)

  • 复制:PIT_TRANSACTIONS_NEGATIVE_CERTIFIED,PIT_TRANSACTIONS_ROWS_VALIDATINGPIT_TRANSACTIONS_LOCAL_ROLLBACK成员消息没有被正确解码。(Bug #90077, Bug #27692831)

  • 复制:在某些情况下,例如在分布式恢复过程中,认证信息垃圾收集清除的数据比它应该清除的要多,导致没有检测到冲突。垃圾收集过程已经进行了改进,以考虑到这种情况。(Bug #89938, Bug #27652526)

  • 复制:ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY错误记录错误。(Bug #89788, Bug #27590534)

  • 复制:group_replication_applier通道的应用程序线程遇到了错误master_log_name而且end_log_pos在错误消息中是不正确的。在组复制中,在将事务的事件写入事务产生的成员的二进制日志之前,先复制事务的事件。结果就是决赛master_log_nameend_log_pos在将这些事件应用到副本上时是未知的group_replication_applier频道的灌肠器线程。为了避免混淆,现在任何此类错误消息都是由group_replication_applier通道不包含二进制日志名称和二进制日志位置。(Bug #89146, Bug #27368735)

  • 复制:使用group_replication_force_members要解除一个组,例如在失去多数后,有时会失败,错误为1231。(Bug #86957, Bug #26394418)

  • macOS:在macOS上,服务器在系统引导时自动启动,即使在MySQL首选项窗格中设置为不启动。(Bug #27969174, Bug #90672)

  • 微软的Windows操作系统:对于Windows上的调试版本,创建空间参考系统如果使用空定义,字符串可能会引发断言。(错误# 27672683)

  • 在客户端库中,错误地为的信号解除阻塞ppoll ().感谢Facebook的补丁。(Bug #28075623, Bug #90999, Bug #28096808, Bug #91067)

  • 某些ALTER TABLE语句可以禁用表加密。(错误# 28045585)

    这个问题是:Bug #27389878的回归。

  • 在一些情况下,MyISAM由于缺少包含文件,代码编译失败。(Bug #28039150, Bug #90898)

  • REGEXP_REPLACE ()函数在类中使用时截断了其结果更新声明。(Bug #28027093, Bug #90870)

  • REGEXP_REPLACE ()来自一个结果集行的结果可以转到下一行,导致当前行中先前结果的累积。(Bug #27992118, Bug #90803)

  • 修复MySQL客户端库堆溢出漏洞。(错误# 27980823)

  • 拥有超级特权不允许修改keyring_operations系统变量。(错误# 27976270)

  • 从MySQL 8.0.11升级到MySQL 8.0.12时,在MySQL 5.7和MySQL 8.0.11中创建的时间戳为0的全文搜索辅助表导致数据字典升级失败。(错误# 27960500)

  • 一个源和目标在memcpy中重叠从MySQL 5.7升级时返回Valgrind错误。(Bug #27945658, Bug #90691)

  • Linux二进制文件在执行后无法转储核心setuid ()调用。(Bug #27929894, Bug #90642, Bug #23337428, Bug #21723)

  • 重置持续没有从内存刷新变量值。(错误# 27924206)

  • 对于调试版本,使用创建表……选择要创建具有长数字字符串的表并对列进行索引,可能会引发断言。(错误# 27909771)

  • 为调试构建,重置持续对于未知变量可能导致引发断言。(Bug #27903874, Bug #90546)

    参考文献:这个问题是:Bug #27374791的回归。

  • 对引用分区表的视图的列元数据的更新可能导致服务器退出。(错误# 27903842)

  • 对于调试构建,可以引发断言联盟类的组合数据类型时的查询几何列和Select * from (Select null).(Bug #27903792, Bug #90550)

  • 对于调试构建,使用。启动服务器thread_stack = 0和执行ALTER TABLE可以提出一个主张。(Bug #27899274, Bug #90525)

  • 显示表状态可能导致服务器退出。(错误# 27897815)

  • 类生成的列时间间隔()功能,可能会发生不正确的行为。(错误# 27881102)

  • 对于Fedora 28,如果安装了Connector ODBC原生包,MySQL Community RPM包将不会安装。(错误# 27850721)

  • 可以放弃性能模式。(错误# 27830283)

  • 的调用可能会出现运行时错误mysql_sys_var_longlong ()字符串:复制().(Bug #27822413, Bug #27808412)

  • 使用了不适当的错误编号的错误日志代码引发了断言。(错误# 27792903)

    这个问题是一个Bug #27462408的回归。

  • 转换为字符集charset_name条款ALTER TABLE产生语法错误,如果charset_name默认的.(Bug #27760787, Bug #90222)

    这个问题是:Bug #27389878的回归。

  • 如果服务器未配置为支持SSL,则当客户端连接尝试指定需要加密连接时,可能会导致未加密连接。(错误# 27759871)

  • 插入……选择没有执行像?那样多的检查插入……值()关于几何列需要有效的几何值。(错误# 27756083)

  • REGEXP_INSTR ()当与无效匹配模式标志一起使用时,没有返回错误消息。(错误# 27751277)

  • 修改了一些数据字典表定义,使其更接近于初始设计。此外,数据字典版本号增加了,引用数据字典表索引的代码现在使用符号索引名而不是数值。(Bug #27745526, Bug #90196)

  • 执行准备好的语句插入具有大量参数的行非常慢。(错误# 27699248)

  • ibd2sdi可能由于执行除零操作而退出。(Bug #27692051, Bug #90071)

  • mysql-boost-8.0.4.tar.gz源分布省略NDB来源。(错误# 27690232)

  • 秀奖助金如果为从匿名用户继承特权的无特权用户执行,可能导致服务器退出。(错误# 27678129)

  • 解析器错误地允许索引名创建索引是空的。(错误# 27676427)

  • 由systemd或mysqld_safe没有写入错误日志。(Bug #27675050, Bug #90012)

  • 对于调试构建,如果事务处于只读模式,则试图创建或删除直方图可能会引发断言。(错误# 27672693)

  • 如果服务器是用——skip-grant-tables设置角色默认导致服务器退出。(错误# 27672154)

  • 铸造的VARBINARY时间值没有正确执行。(错误# 27665997)

  • 对象的条件创建后没有执行错误检查常量参考。(错误# 27665085)

  • MeCab模型发布后使用MeCab模型管理的字典信息对象。(错误# 27660368)

  • 的事件试图中止MYSQL_AUDIT_AUTHENTICATION_CLASS类导致服务器退出。这些事件现在是不可中止的。(错误# 27645636)

  • 这些资源组语句现在在存储函数中是不允许的,因为它们会导致隐式提交,而在存储函数中是不允许的:创建资源组改变资源组降低资源组.(Bug #27638623, Bug #89914)

  • 审计日志筛选规则不允许将类名指定为字符串数组。这现在是可能的。例子:

    {“过滤器”:{“类”:[{“名称”:[“连接”,“一般”,“table_access " ] } ] } }

    (错误# 27628325)

  • 在Windows上,如果Visual c++ Redistributable for Visual Studio已经被删除,使用MSI安装程序卸载MySQL会失败。(错误# 27621546)

  • mysql_secure_installation现在加载validate_password组件而不是已弃用的validate_password插件。(错误# 27619667)

  • REGEXP_LIKE ()使用包含问号的表达式(?)没有被正确地处理。(错误# 27595368)

  • REGEXP_SUBSTR ()并不总是处理正确的模式。(错误# 27572258)

  • 一些显示创建表语句可以引发断言。(错误# 27569314)

  • 在性能方案中可以看到虚假的阶段events_stages_current表格(错误# 27566220)

  • 表的触发器可以以不同于它们所指定的顺序执行之前/遵循条款。(错误# 27544152)

  • 尝试在启动时设置一些持久变量(例如keyring_operations而且mandatory_roles)产生特权侵犯错误,服务器没有启动或没有设置该变量。(错误# 27523095)

  • 在某些情况下,MeCab全文搜索代码中出现未使用变量警告。感谢Laurynas Biveinis的补丁。(Bug #27519952, Bug #89598)

  • 在存储过程中,如果所涉及的表使用联邦存储引擎。(错误# 27509959)

  • 可以删除在外键关系中充当父键的主键。此外,对于表的创建,SQL层现在检查外键是否有父键,如果缺少父键,则报告错误。(Bug #27506922, Bug #89570, Bug #11754696, Bug #46337)

  • NO_ENGINE_SUBSTITUTION禁用SQL模式时,会发生错误(而不是替换)创建表而且ALTER TABLE方法禁用了所需的引擎disabled_storage_engines系统变量。(错误# 27502530)

  • 键旋转使用keyring_encrypted_fileKeyring插件可能导致服务器退出。(错误# 27497018)

  • 如果MySQL企业防火墙配置了大量的规则,服务器关闭可能需要很长时间。(错误# 27492122)

  • 设置PERSIST_ONLYvar_name=违约持久化当前全局值,而不是默认值。(错误# 27489026)

  • 如果MySQL配置了LINK_RANDOMIZECMake选择启用时,——gc-sections编译器选项现在被禁用;这种组合会导致分割错误。(错误# 27484106)

  • 在服务器安装过程中,出现mysql.infoschemamysql.session,mysql.sys保留帐户与mysql_native_password认证插件,即使默认插件是caching_sha2_password.(错误# 27454299)

  • 一些窗口函数对其聚合数据类型使用了错误的精度。(错误# 27452179)

  • 用于十六进制值H选择(1)在哪里H提出了一个断言。(错误# 27452082)

    参考文献:参见Bug #27041382。这个问题是:Bug #21982792的回归。

  • 中的内存泄漏pfs-t单元测试是固定的。感谢Yura Sorokin的补丁。(Bug #27440735, Bug #89384)

  • 多次调用的CHAR ()在存储程序中,一旦将无效的代码点作为参数传递,就会产生不同的结果。(错误# 27410088)

  • automatic_sp_privileges启用时,执行而且改变日常没有正确地将特权授予例程创建者。(错误# 27407480)

  • 一些使用排序的查询可能在优化期间访问未初始化的列,并导致服务器退出。(错误# 27389294)

  • 对于调试构建,会引发断言(而不是错误)ALTER TABLE对于一个存档表一个几何不空包含空字符串的列。(Bug #27330634, Bug #89088)

  • 通过身份验证的帐户auth_sock身份验证插件无法使用旧客户端连接。(错误# 27306178)

  • 如果无法读取或初始化系统表,则服务器将写入不完整的错误消息。感谢Daniël van Eeden提供修复相关补丁。(Bug #27302337, Bug #89001)

  • 重命名用户当用于重命名未授予任何帐户或角色的角色时失败。(错误# 27284699)

  • keyring_okv当主服务器不可用时,插件并不总是故障转移到备用OKV服务器。(错误# 27244099)

  • 性能模式可能尝试访问无效列值。(错误# 27231036)

  • 内部特权结构处理不当可能导致服务器退出。(错误# 27230925)

  • 对于调试构建,使用太小的类型来计算GIS计算中的行列式可能会引发断言。(错误# 27135504)

  • 试图增加的长度VARCHAR列的InnoDB表的使用ALTER TABLE原地算法,如果列已被索引,则尝试失败。

    如果索引大小超过InnoDB的767字节的限制紧凑的冗余行格式,创建表而且ALTER TABLE没有报告错误(在严格SQL模式下)或警告(在非严格模式下)。(错误# 26848813)

  • 在MySQL 5.7.19中,mysql.gtid_executed表被排除在转储之外。该表不再被排除,但其数据不会被转储。(Bug #26643180, Bug #87455)

    这个问题是一个Bug #82848, Bug #24590891的回归。

  • slave_rows_search_algorithms系统变量控制在为基于行的日志记录和复制准备批量行时如何搜索匹配的行。指定INDEX_SCAN其中一种搜索算法在索引出现时执行索引扫描。在主节点和从节点上使用不同的主键,从节点上使用唯一的键的情况下,代码中的一个错误意味着没有按照应该的方式执行索引扫描,而是执行了较慢的表扫描。这个问题现在已经得到了纠正,因此使用了索引扫描。(Bug #26450129, Bug #23311892, Bug #81500, Bug #81501)

  • 子查询物化的某些情况可能导致服务器退出。这些查询现在会产生一个错误,建议禁用物化。(错误# 26402045)

  • 地理上的空间运算GeometryCollection可以返回值ER_GIS_INVALID_DATA为有效的几何图形。(错误# 26174808)

  • MyISAM表,特定的序列插入而且删除语句可能导致表损坏。(错误# 25541037)

  • 显示创建用户声明要求选择特权的mysql数据库,除非查看当前用户的信息。此外,对于当前用户,该语句需要选择特权的mysql.user中显示密码哈希的系统表确认为条款;否则,散列显示为<秘密>.(错误# 24911117)

  • 创建函数如果没有默认数据库且函数体调用了另一个函数,则会产生错误。(Bug #24357244, Bug #82350)

  • 对于调试版本,a选择如果派生表解析失败,在存储程序中执行的语句会引发断言。(错误# 23221336)

  • 如果, mysqldumpmysqlpump用于转储二进制数据而不使用——hex-blob选项,重新加载转储文件可能会产生虚假的警告(无论警告如何,值都正确插入)。这样的值现在在_binary引入器来消除警告。(Bug #22601255, Bug #80150)

  • 包含通配符的字符串比较可以引用未初始化的内存。(错误# 12635103)

  • REGEXP_REPLACE ()提出了一个Valgrind使用无效捕获组调用时发出警告。(Bug #87842, Bug #27612255)