10bet网址
MySQL 5.7版本说明
相关的文档10bet官方网站 下载发行说明

MySQL 5.7版本说明/ MySQL 5.7.19的变化(2017-07-17,一般可用性)

MySQL 5.7.19(2017-07-17,一般可用性)

帐户管理说明

  • 在数据目录初始化或升级期间,MySQL现在创建一个“mysql.session”@“localhost”保留帐户。此帐户用于插件内部访问服务器。它被锁定,因此不能用于客户端连接。(错误# 25642343)

编译的笔记

  • Solaris:在Solaris上,MySQL二进制发行版现在与libatomic.so,所以他们不再依赖libstatomic.so.(错误# 25909965)

弃用和移除说明

密匙环的笔记

  • MySQL企业版现在包含一个keyring_aws该插件与Amazon Web Services密钥管理服务通信,作为密钥生成的后端,并使用本地文件进行密钥存储。有关更多信息,请参见MySQL密匙环

包装的笔记

  • mysqladmin被添加到Docker/Minimal包中,因为InnoDB集群需要它。(错误# 25998285)

  • 对于Windows, MSI安装包现在包括检查所需的Visual Studio可重分发包,并产生一个消息,要求用户安装它,如果它是丢失的。(错误# 25658832)

  • Debian/Ubuntu包现在通过systemd支持多个MySQL实例。看到使用systemd管理MySQL服务器.(Bug #24559588, Bug #82785)

可插入身份验证

  • MySQL企业版现在支持MySQL用户的LDAP可插拔认证。这允许MySQL服务器使用LDAP(轻量级目录访问协议)通过访问目录服务(如X.500)来验证MySQL用户。有关更多信息,请参见LDAP可插拔认证

安全记录

  • MySQL商用服务器的链接OpenSSL库已经更新到1.0.2l版本。在新的OpenSSL版本中修复的问题描述在http://www.openssl.org/news/vulnerabilities.html

    此更改不影响oracle生成的MySQL Server的MySQL Community构建,它使用yaSSL库代替。(错误# 26160962)

空间数据支持

测试套件说明

  • mysql-test-run.pl现在有一个——测试进程选项,用于显示剩余测试的百分比。(Bug #25601131, Bug #20755059, Bug #76455)

  • 这些变化是对——xml报表选择mysql-test-run.pl

    • 一个< >失败标记标识重试尝试中失败的任何测试。

    • 对于跳过和禁用的测试,包含单独的统计信息和字段。

    • 如果没有给出外部构建的绝对路径,则在构建目录中创建XML报告。

    • 对于组合运行,一个名为变异包含在< testcase >标签。

    • 属于一个套件的所有测试的结果都聚合在一个套件中< testsuite >标签。

    • 关于失败的信息在一个名为消息,以及标签中的其他细节。

    (错误# 25349924)

  • mysql-test-run.pl现在支持——report-unstable-tests具有以下效果的选项:

    • 报告使用单独类别中的至少一次重试尝试通过的任何测试不稳定测试在总结中。

    • 如果所有的失败都是由于不稳定的测试,mysql-test-run.pl产生警告,但成功退出。

    • 属性时,添加新的XML标记以报告不稳定测试——xml报表Option也指定了。

    (Bug #24473420, Bug #25984429)

  • mysqltest现在支持replace_numeric_round命令,该命令接受从0到16的参数值,指示数值要舍入的小数数。这可用于帮助防止测试的结果内容不匹配错误,在这些测试中,由于精度差异,跨平台获得的结果略有不同。感谢Daniel Black的补丁。(Bug #23280117, Bug #81399)

X插件说明

  • X插件现在可以正确处理过期的SSL证书。(错误# 25835833)

  • 子句的输出,如集团而且已通过移动grouping_criteria表达式传递给派生查询。(Bug #25549637, Bug #24497007)

特定于平台的笔记

  • Linux:MySQL 8.0的通用Linux版本现在在其主机系统上支持非统一内存访问(NUMA)。使用构建的系统需要libnuma安装在上面。看到使用通用二进制文件在Unix/Linux上安装MySQL欲知详情。(错误# 26005558)

  • Linux:MySQL 8.0的通用Linux版本现在是在Oracle Linux 6上使用glibc2.12.使用构建的系统需要glibc在它们上安装2.12或更高版本。(错误# 26005558)

添加或更改的功能

  • 复制:group_replication_transaction_size_limit变量的添加使您能够保护组免受导致失败的大型事务的影响。(Bug #84785, Bug #25510757)

  • 复制:组复制现在支持保存点SQL事务。

  • RPM.spec文件现在包含对运行单元测试的支持。(Bug #25814143, Bug #85743)

  • mysql客户端现在支持——binary-as-hex选项,用于使用十六进制表示法显示二进制数据(0 x价值).感谢Daniël van Eeden提供的补丁。(Bug #25340722, Bug #84391)

  • audit_log过滤器解析器现在为过滤器定义中的意外JSON元素产生错误。(错误# 24360663)

错误修复

  • 不兼容的更改:像Group Replication和X Plugin这样的插件现在使用mysql.session本版本新增的帐号。的旧版本升级mysql.session必须运行的帐户mysql_upgrade以确保帐户已创建。如果mysql_upgrade是否是未运行,插件启动失败的错误消息尝试使用用户mysql.session@localhost访问服务器时出错。确保该用户存在于服务器中,并且mysql_upgrade在服务器更新后运行。以前使用的用户,如mysqlxsys,不再被创建。(错误# 26042764)

    参考:参见:Bug #24311527, Bug #25642343, Bug #25750822, Bug #25103980, Bug #83841。

  • InnoDB:一个ALTER TABLE重新生成加密表的操作没有正确设置加密属性。(错误# 26243264)

  • InnoDB:虚拟索引记录中的虚拟列字段的长度小于预期的模板列长度。(错误# 25793677)

  • InnoDB:服务器为重新构建表的操作分配了不必要的内存。(Bug #25573565, Bug #85043)

  • InnoDB:foreign_key_checks残疾,InnoDB在引用不存在的外键的表上执行操作时,错误地将消息打印到错误日志。(错误# 25365223)

  • InnoDB:在一次截断表操作时,在从缓冲池中清除脏页之前释放了字典操作锁,导致锁存顺序违反。(错误# 25357789)

  • InnoDB:当使用索引合并优化器开关时,aSELECT COUNT (*)操作有时返回0。分区代码执行错误amemcpy而不是索引读取的列的列复制,导致复制错误的记录。(Bug #25332330, Bug #81031)

  • InnoDB:重命名表将表移动到不同模式的操作,InnoDB在重新启动时返回错误,表明无法定位表空间数据文件。InnoDB更新失败INNODB_SYS_DATAFILES数据字典表期间重命名表操作。(Bug #25189192, Bug #84038)

  • InnoDB:加载InnoDB在MySQL 5.7中,表需要更多的内存,这主要是由于临时表优化增加了内存结构成员。只用于临时表的内存结构成员现在只在需要时分配。(错误# 25080442)

  • InnoDB:在一次ALTER TABLE重新构建包含虚拟列的表的操作。InnoDB应用并发插入日志记录失败。处理步骤(错误# 24961167)

  • InnoDB:InnoDB日志含义为原地应用并发删除日志失败ALTER TABLE由于虚拟列验证问题导致的操作。(错误# 24960450)

  • InnoDB:更改InnoDB在MySQL 5.7中,恢复过程可能需要对重做日志进行三次扫描。为了减少扫描次数,将第一次扫描和第二次扫描合并。使用此更改,只有一次扫描,除非由扫描填充的重做日志记录哈希表达到其内存阈值。在这种情况下,将启动第二个扫描,执行同步扫描和应用。(Bug #22963951, Bug #80788)

  • 分区:当查询执行反向顺序范围扫描(以满足订购…DESC)在分区上使用索引条件下推InnoDB表,它可能需要不合理的长时间来完成。这是由于条件下推检查未能获得范围的边界,因此扫描继续读取索引元组,直到到达索引中的第一个值。(Bug #83470, Bug #24929748)

    参考:参见Bug #84107。

  • 复制:在以单主模式部署的Group Replication插件延迟初始化的情况下,次要服务器能够通过异步复制通道进行写操作,这在Group Replication插件的正常初始化中是不允许的。(错误# 26314756)

  • 复制:对于事件日志事件生成的gtid, MySQL错误码1590 (ER_SLAVE_INCIDENT)不能使用——slave-skip-errors = 1590复制从机上的启动选项。(错误# 26266758)

  • 复制:一个使用之后的声明设置GTID_NEXT这句话有时没有效果。(错误# 26128931)

  • 复制:组现在可以包含运行不同服务器版本的成员,使您能够在线升级复制组。不同版本组成员的组合规则如下:

    • 如果您有一个8.0成员的组,则不能添加5.7成员

    • 如果你有一个有5.7个成员的组,你可以添加一个8.0成员,但是它仍然是只读模式。当组包含多个服务器版本时,向此成员写入是危险的,应该避免。

    在单一初选组中,如果当前初选离开该组,必须选举新的初选,则首先从较低版本的成员中选择初选。如果没有找到低版本成员,则从新版本成员中选择主成员。(错误# 25876807)

  • 复制:binlog_checksum =没有在MySQL服务器上设置后启动,然后启动组复制,如果发生错误,服务器仍然在恢复状态和无法关闭。(Bug #25793366, Bug #85667)

  • 复制:在Group Replication设置中,在不同复制组的成员之间实现了循环异步复制,视图更改日志事件在组之间重复复制,每次都使用新生成的gtid。该修复程序确保视图更改日志事件在发生的指定复制组之外被忽略,并且永远不会生成新的gtid。(错误# 25674926)

    参考:参见:Bug #26049695, Bug #25928854, Bug #25721175。

  • 复制:当从RPM安装后第一次启动MySQL服务器时,密码验证插件默认是激活的(仅对RPM安装为true)。如果此时已启用二进制日志记录,则记录激活,即使插件激活不应记录在二进制日志中。(错误# 25672750)

  • 复制:在单主组复制与异步复制相结合的设置中,例如S1和S2组成一个组,S2和S3作为主和从,像S2这样的从端正在接受事务,然后这些事务可以进入组。此修复程序阻止从属端在属于单个主组时创建异步复制区域通道,并且在运行异步复制时无法启动“组复制”。(Bug #25574200, Bug #85047)

    参考:参见Bug #86325, Bug #26078602。

  • 复制:如果成员未能加入组,则该成员不会停止并继续接受事务。为了避免这种情况,将你的成员设置为super_read_only = 1my.cfg文件。Group Replication现在在成功启动并设置时检查此设置super_read_only = 0.这确保了没有成功加入组的成员不能接受事务。(Bug #25474736, Bug #84728)

  • 复制:如果主服务器上的二进制日志被旋转,并且存储二进制日志文件的分区上出现满磁盘状况,则服务器可能会意外停止。当转储线程切换到下一个二进制日志文件时,该修复添加了一个检查二进制日志是否存在。如果二进制日志被禁用,则所有当前活动日志之前的二进制日志都将被传输到slave线程,并向接收线程返回一个错误。(错误# 25076007)

  • 复制:当事务隔离级别设置为时,交叉事务有时会导致从应用程序死锁可重复读取.(错误# 25040331)

  • 复制:如果一个名为中继日志文件的中继日志索引文件不存在,重置从机全部有时没有完全清理得当。(错误# 24901077)

  • 复制:slave_skip_errors系统变量不允许错误数大于3000。感谢田中聪的补丁。(Bug #24748639, Bug #83184)

  • 复制:mysqlbinlog,如果使用——生选项,在进程终止之前不会刷新输出文件。但是如果也调用了——stop-never选项,则进程永远不会终止,因此不会向输出文件写入任何内容。现在,每个事件之后都会刷新输出。(错误# 24609402)

  • 复制:内存泄漏mysqlbinlog是固定的。泄漏发生在处理假旋转事件或使用时——生无法创建目标日志文件。泄漏仅在处理来自远程服务器的事件时发生。感谢Laurynas Biveinis为修复这个bug所做的贡献。(Bug #24323288, Bug #82283)

  • 复制:从服务器可能会丢失尚未应用的事件MASTER_AUTO_POSITION = 0时,两个复制线程都被停止,应用程序延迟使用将master修改为master_delay =N.(Bug #23203678, Bug #81232)

    参考:参见Bug #25340185, Bug #84375。

  • 复制:大型GCS信息的传输可能需要很长时间,以至于发送者似乎已经死亡。(错误# 22671846)

  • 复制:不能使用小队列大小配置多线程从库slave_pending_jobs_size_max如果他们需要处理比这个规模更大的事务。任何大于slave_pending_jobs_size_max被拒绝,错误ER_MTS_EVENT_BIGGER_PENDING_JOBS_SIZE_MAX,即使数据包小于slave_max_allowed_packet

    有了这个解决方案,slave_pending_jobs_size_max变成了软限制而不是硬限制。如果数据包的大小超过slave_pending_jobs_size_max但是小于slave_max_allowed_packet,该事务将一直持有,直到所有从工作队列都为空,然后才进行处理。在大的事务完成之前,所有后续事务都将保持。因此,可以限制slave worker的队列大小,同时仍然允许偶尔进行更大的事务。(Bug #21280753, Bug #77406)

  • 复制:中断复制的事件事件没有使用GTID写入二进制日志,因此不可能使用设置gtid_next =价值.相反,有必要直接设置中继日志文件和中继日志位置;这意味着,当自动定位被启用时,首先需要禁用它,然后设置中继日志文件和位置,最后重新启用自动定位。

    现在,在这种情况下,MySQL将事件写入语句缓存,以便在刷新之前为其生成和写入GTID,并且从应用程序处理更改。然后用户可以使用SQL语句跳过该事件设置gtid_next =价值,然后是开始而且提交.(错误# 19594845)

  • 复制:在某些情况下,主机可以写入二进制日志alast_committed值小于它应该是多少。这可能导致从服务器在不应该执行的并行事务中执行,从而导致不一致或其他错误。(Bug #84471, Bug #25379659)

  • 复制:当使用group_replication_ip_whitelist =自动,私有网络中的IP被自动允许,但是一些C类IP地址没有被正确地允许。(Bug #84329, Bug #25503458)

  • 复制:当服务器为现有的GTID_NEXT事务分配了一个冲突的GTID时,Group Replication在检测到具有相同GTID的两个事务时生成一个断言。这是因为Group Replication在冲突检测后生成GTID,这比主/从复制晚。该修复放宽了一些条件,仅在提交完成时调用,并添加了一条消息,在已经使用GTID时提醒您。(Bug #84153, Bug #25232042)

  • 复制:复制应用程序线程返回错误3002ER_INCONSISTENT_ERROR当预期错误数与实际错误数之间存在差异时。现在可以通过使用3002 with来忽略此错误slave_skip_errors.(Bug #83186, Bug #24753281)

  • 复制:MySQL丢失了它的GTID位置后,重新启动时,从, mysqldump已用于加载数据。

    为了防止这个问题的发生,mysql.gtid_executed表现在自动从转储中排除, mysqldump.(Bug #82848, Bug #24590891)

    参考:参见Bug #87455, Bug #26643180。

  • 复制:多源复制中一个通道的中继日志损坏,导致在服务器重新启动期间未初始化良好通道。另外,在运行时配合——skip-slave-start = false,服务器也无法启动那些状态良好的通道的从线程,尽管事实上它应该已经启动了所有良好通道的从线程。

    现在,不管其他通道上是否有任何错误,服务器都会尝试创建和初始化状态良好的通道,如果是,则为状态良好的通道启动从线程——skip-slave-start是禁用的。作为修复的一部分,开始的奴隶而且停止奴隶,它们打算在所有通道上运行,也会被修改,以便即使它们发现其中的坏通道,也能继续在所有好的通道上执行。(Bug #82209, Bug #24285104)

  • 复制:SQL线程无法GTID跳过部分事务。(Bug #81119, Bug #25800025)

  • Debian客户端包缺少与akonadi-backend-mysql包冲突的信息。(错误# 26002288)

  • , mysqldump可以写入数据库名称吗使用语句不正确。(错误# 25998635)

  • 如果mysql_stmt_close ()C API函数被调用时,它释放了以后可以访问的内存mysql_stmt_error ()mysql_stmt_errno (),或mysql_stmt_sqlstate ()被称为。调用后获取错误信息mysql_stmt_close (),叫mysql_error ()mysql_errno (),或mysql_sqlstate ()代替。(错误# 25988681)

  • 在以下情况下,查询可能被错误地缓存,导致不正确的查询结果:InnoDB表;正在插入但尚未提交的行;查询使用表作为派生表中的基表;优化器选择物化派生表。(Bug #25943038, Bug #86047)

  • Debian/Ubuntu软件包中缺少了一些实用程序的手册页。(错误# 25811814)

  • 场效应单元测试在启用AddressSanitizer时运行失败。感谢Laurynas Biveinis的补丁。(Bug #25803823, Bug #85678)

  • Debian客户端包缺少与本机包冲突的信息。(错误# 25799475)

  • Perl路径# !Perl脚本开头的行已调整为/usr/local/bin/perl用于FreeBSD 11。(错误# 25719975)

  • 对于调试版本,为Bug#59686添加的断言过于严格,可能会在不应该被引发的时候被引发。(错误# 25685958)

    参考:参见Bug #59686。

  • 从MySQL 8.0安装降级到MySQL 5.7时,出现了一个服务器退出,因为优化器成本表包含生成的列。(错误# 25650399)

  • 服务器试图访问无效内存时异常退出。(错误# 25501659)

  • mysqld由TCP包装器和系统而且hosts.deny配置为限制从IP地址访问的文件,从该地址的连接尝试导致错误日志中的消息过多。(Bug #25476479, Bug #84708)

  • mysqlpump不再包括slave_master_info而且slave_relay_log_info的转储中的表mysql系统数据库。还原包含这些表的转储文件会因为不正确地更改复制状态而导致问题。(错误# 25469190)

  • 通过调用所做的更改mysql_options ()设置MYSQL_OPT_SSL_MODE会受到后期的影响吗mysql_options ()调用。现在设置MYSQL_OPT_SSL_MODE不受以后的影响mysql_options ()调用。(错误# 25452210)

  • 可能会出现竞态条件创建表语句与数据目录索引目录条款。(错误# 25451091)

  • 在不同的目录下编译MySQL会产生不同的构建,从而将绝对路径泄漏到调试信息中__FILE__.(Bug #25436469, Bug #84608, Bug #25859274, Bug #85855)

  • 在强制模式下的SELinux上keyring_okv插件连接Oracle密钥库服务器失败。(错误# 25420001)

  • 修改表…修改在一个日期时间不为空列使用条款导致ER_INVALID_USE_OF_NULL错误。(错误# 25385334)

  • 范围优化器可能创建不正确的查询树,导致服务器退出。(Bug #25369742, Bug #25586531)

  • mysqld_failed方法启动服务器——datadir选项使用相对路径名指定。(错误# 25364806)

  • XA准备XA回滚,XA提交对于来自断开连接的会话的事务,没有采用全局提交锁并修改二进制日志和InnoDB重做日志,即使当用读锁刷新表已经生效。当备份工具假定服务器处于只读状态时,这可能导致不一致的备份。(Bug #25364178, Bug #84442)

  • GROUP_CONCAT(不同的)属性的值,则返回非唯一值tmp_table_size系统变量。(Bug #25331425, Bug #84320)

  • 对Bug #78777的修复根据是否启用性能模式有不同的影响。(Bug #25309017, Bug #84305)

    这个问题是对Bug #78777的回归。

  • 某些嵌套查询中的聚合函数可能导致服务器退出。(错误# 25303711)

  • 类型的虚拟生成列表达式CONV ()十六进制()如果连接字符集被更改,函数可能会导致问题。在这个上下文中,表字符集现在用于这些函数,而不考虑连接字符集。(错误# 25287633)

  • 重写插件没有正确地执行锁定read_only使能系统变量。(错误# 25264253)

  • read_onlyEnabled,创建非临时表按非-超级在某些条件下允许使用。(错误# 25250768)

  • 对于一个有时间戳DATETIME默认为的列CURRENT_TIMESTAMP,该列可以初始化为0000-00-00就是“如果桌子有一个之前插入触发器。(Bug #25209512, Bug #84077)

  • 某些存储函数,如果在查询中使用在哪里子句,可以使用索引条件下推处理(这不应该发生),导致服务器退出。(Bug #25196653, Bug #25174454)

  • 某些针对InnoDB使用主键和子查询的表可能返回不正确的结果index_merge_intersection国旗optimizer_switch使能系统变量。(Bug #24829050, Bug #79675)

  • 初始化keyring_okv插件失败,如果STANDBY_SERVER中缺少设置okvclient.ora配置文件,有效地使此设置为强制设置。STANDBY_SERVER现在是可选的。(错误# 24816271)

  • 在x86机器上,uint3korr ()宏读取4字节的数据,而不是预期的3字节。(Bug #24807826, Bug #83264)

  • 在memcached插件的获取操作期间引发了一个断言。(错误# 24605783)

  • 包含的查询联盟在子查询和集团可能返回不正确的结果。(错误# 24595639)

  • 当确定性函数返回时,服务器可以解除对空指针的引用量变在子查询中使用。(错误# 24595581)

  • 可能会发生不正确的行为插入语句在存储程序或预处理语句上下文中执行,如果的一部分关于重复密钥更新提及的条款的价值插入列清单。(Bug #24538207, Bug #25361251, Bug #25530880, Bug #25684790)

  • Debian包中的systemd支持脚本包含对数据目录的硬编码引用,因此很难使用——datadir.(Bug #24398446, Bug #82417)

  • 在macOS 10.10.5下使用Clang编译MySQL失败。(Bug #24352163, Bug #82340)

  • 如果一个取代语句试图更新包含类型的虚拟生成列的表中的行,后续的DML语句可能行为不正确。(错误# 23573575)

  • 一些代理授权没有复制到从服务器,导致不正确的复制。(Bug #23289541, Bug #81424, Bug #23623115)

  • 的帮助输出mysqlxtest已得到改进。(Bug #23107137, Bug #81086)

  • 控件编译时出现的大量警告已被调整为消除keyring_file插件使用Clang。(Bug #22834591, Bug #80524)

  • 如果启用事件调度器导致定义为的事件完成后不保存由于已经过了执行时间,drop事件没有被写入二进制日志,导致从服务器不能复制它,如果后来创建了同名的事件,则复制失败。(错误# 22150112)

  • 加载XML当读取的XML文件包含大量空格(例如缩进或漂亮打印引入的空格)时,性能明显变慢。现在,在将每个值读入内存之前,所有前导空格都被删除。(错误# 16212207)