Documentation Home
MySQL 5.6 发行说明  /  MySQL 5.6.0 中的变化(未发布,里程碑 4)

MySQL 5.6.0 中的变化(未发布,里程碑 4)

笔记

这是一个里程碑版本,使用风险自负。不支持里程碑版本之间的升级(或从里程碑版本升级到 GA 版本)。重大的开发变更发生在里程碑版本中,您可能会遇到兼容性问题,例如除了运行mysql_upgrade的常规过程之外还需要注意的数据格式更改。例如,您可能会发现有必要在升级前使用mysqldump转储数据并 在升级后重新加载。(无论如何,在升级之前进行备份是一种谨慎的预防措施。)

弃用和移除说明

  • 复制: 这些未使用和弃用的项目已被删除: --init-rpl-role--rpl-recovery-rank选项、 rpl_recovery_rank系统变量和 Rpl_status状态变量。(错误#54649,错误#11762095)

    参考资料:另请参阅:Bug #34437、Bug #11747900、Bug #34635、Bug #11747961。

  • 在 MySQL 5.5 中,设置 optimizer_search_depth为已弃用的值 63 切换到 MySQL 5.0.0(及以前版本)中用于执行搜索的算法。63 的值现在被视为无效。

性能模式注释

  • 性能模式现在包括表输入和输出的检测。检测操作包括对持久基表或临时表的行级访问。影响行的操作是获取、插入、更新和删除。对于视图,等待与视图引用的基表相关联。

全球唯一的服务器 ID

  • 复制: 实施了 MySQL 服务器的全球唯一 ID。当 MySQL 服务器启动时,现在会自动获取 UUID。服务器首先检查 auto.cnf文件中写入的 UUID(在服务器的数据目录中),如果找到则使用此 UUID。否则,服务器会生成一个新的 UUID 并将其保存到该文件(如果文件不存在,则创建该文件)。此 UUID 可用作server_uuid系统变量。

    MySQL 复制主服务器和从服务器知道彼此的 UUID。从站的 UUID 的值可以在 的输出中读取 SHOW SLAVE HOSTS。从站开始使用START SLAVE后,主站的 UUID 值在从站的输出中可用SHOW SLAVE STATUS。(缺陷 #33815,缺陷 #11747723)

    参考资料:另请参阅:Bug #16927、Bug #11745543。

添加或更改的功能

  • 分区: 现在可以使用ALTER TABLE ... EXCHANGE PARTITION语句将分区表的分区或子分区表的子分区与具有相同结构的非分区表交换。例如,这可用于导入和导出分区。

    有关更多信息和示例,请参阅 使用表交换分区和子分区

  • 复制:SHOW SLAVE STATUS语句现在有一个Master_Info_File字段指示master.info文件的位置。(错误#50316,错误#11758151)

  • 复制: MySQL 现在支持延迟复制,这样从服务器故意落后于主服务器至少指定的时间量。默认延迟为 0 秒。使用新 MASTER_DELAY选项 CHANGE MASTER TO将延迟设置为N秒:

    CHANGE MASTER TO MASTER_DELAY = N;

    从 master 接收到的事件至少 N比它在 master 上的执行晚几秒才执行。

    START SLAVESTOP SLAVE立即生效,忽略任何延迟。RESET SLAVE将延迟重置为 0。

    SHOW SLAVE STATUS具有三个新字段,可提供有关延迟的信息:

    • SQL_Delay:从站必须滞后于主站的秒数。

    • SQL_Remaining_Delay:当 Slave_SQL_Running_State为 时Waiting until MASTER_DELAY seconds after master executed event,此字段包含延迟剩余的秒数。在其他时候,这个字段是 NULL

    • Slave_SQL_Running_State:SQL 线程的状态(类似于Slave_IO_State)。该值与State显示的 SQL 线程的值相同SHOW PROCESSLIST

    当从属 SQL 线程在执行事件之前等待延迟结束时,SHOW PROCESSLIST将其State 值显示为Waiting until MASTER_DELAY seconds after master executed event

    relay-log.info文件现在包含延迟值,因此文件格式已更改。请参阅 复制元数据存储库。特别是,文件的第一行现在指示文件中有多少行。如果将从服务器降级到 MySQL 5.6 之前的版本,旧服务器将无法正确读取文件。要解决此问题,请在文本编辑器中修改文件以删除包含行数的初始行。

    延迟复制的引入需要以下限制:

    • 以前该BINLOG 语句可以执行所有类型的事件。现在它只能执行格式描述事件和行事件。

    • 无法解析 mysqlbinlog --base64-output=ALWAYS 的输出ALWAYS在 5.6.1 中成为此选项的无效值。

    有关其他信息,请参阅 延迟复制。(错误#28760,错误#11746794)

  • Romansh 语言环境'rm_CH'现在是 lc_time_names系统变量的允许值。(错误#50915,错误#11758678)

  • mysqlbinlog现在有一个 --binlog-row-event-max-size 选项可以启用从二进制日志文件读取大行事件。(漏洞 #49932)

  • mysqldump现在有一个 --add-drop-trigger选项,可以在每个转储的触发器定义之前添加一条DROP TRIGGER IF EXISTS语句。(缺陷 #34325,缺陷 #11747863)

  • 为 Unicode 字符集添加了越南语排序规则。那些基于 Unicode 归类算法 5.2.0 的名称具有形式 xxx_vietnamese_520_ci (例如,utf8_vietnamese_520_ci)。那些基于 Unicode 归类算法 4.0.0 的名称具有形式 xxx_vietnamese_ci (例如,utf8_vietnamese_ci)。这些排序规则与相应的 排序规则xxx_unicode_520_cixxx_unicode_ci 排序规则相同,但预组合字符除外,这些字符是ADEOU”的重音版本. 源自中文的表意字符没有变化。没有二合字母。

  • Unicode 归类名称现在可能包含一个版本号,以指示归类所基于的 Unicode 归类算法 (UCA) 版本。因此创建的初始归类使用版本 UCA 5.2.0。例如, utf8_unicode_520_ci基于 UCA 5.2.0。不包含版本号的基于 UCA 的 Unicode 归类名称基于版本 4.0.0。

    LOWER()UPPER()根据他们的论点的整理进行大小写折叠。仅当参数具有使用足够新的 UCA 版本的排序规则时,这些函数才会转换仅在 4.0.0 以上的 Unicode 版本中具有大写和小写版本的字符。

    用于创建用户定义归类的 LDML 规则得到扩展,以允许标记中的可选version属性 <collation>指示归类所基于的 UCA 版本。如果 version省略该属性,则其默认值为4.0.0。请参阅 将 UCA 归类添加到 Unicode 字符集

  • Unicode 字符集现在具有 xxx_german2_ci 提供 DIN-2(电话簿)排序(例如,utf8_german2_ci)的排序规则。请参阅 Unicode 字符集

  • mysqlbinlog现在能够以其原始二进制格式备份二进制日志。当使用 --read-from-remote-server--raw选项调用时, mysqlbinlog连接到服务器,请求日志文件,并以与原始格式相同的格式写入输出文件。请参阅使用 mysqlbinlog 备份二进制日志文件

  • 新的 SQL 函数 WEIGHT_STRING()返回输入字符串的权重字符串。权重字符串表示输入字符串的排序和比较值。请参阅 字符串函数和运算符

修正错误

  • 安全修复:修复 了一个安全漏洞。(漏洞 #49124)

  • InnoDB: 如果以 . 启动,服务器可能会在关闭时崩溃 --innodb-use-system-malloc=0。(错误#55581,错误#11762927)

  • 复制: 指示用户值是已签名还是未签名 (unsigned_flag) 的内部标志有时会在记录用户值以进行日志记录的时间和该值实际写入二进制日志的时间之间发生变化,这可能导致不一致. unsigned_flag复制用户变量值时复制 现在unsigned_flag用于日志记录。(错误#51426,错误#11759138)

    参考资料:另请参阅:Bug #49562、Bug #11757508。

  • Microsoft Windows: 在 Windows 上,无法使用 IPv4 地址或主机名与服务器建立 IPv6 连接。(错误#52381,错误#11760016)

  • Microsoft Windows: 在 Windows 上,该my_rename()函数无法检查源文件是否存在。(缺陷 #51861,缺陷 #11759540)

  • Microsoft Windows: 在 Windows 上, mysqlslap因尝试使用共享内存进行连接而崩溃。(错误#31173、错误#11747181、错误#59107、错误#11766072)

  • 在确定要搜索选项文件的目录时,嵌入式服务器可能会崩溃。(错误#55062,错误#11762465)

  • 性能架构代码容易发生缓冲区溢出。(漏洞 #53363)

  • 子查询执行EXPLAIN 可能不正确并引发断言。(错误#52317,错误#11759957)

  • 在查询优化期间应该考虑或允许哪些索引GROUP BY之间 存在混淆。ORDER BY(错误#52081,错误#11759746)

  • 子查询行的输出refEXPLAIN可能缺少信息。(错误#50257,错误#11758106)

  • 语句的密码以CREATE USER 明文而非密文形式写入二进制日志。(漏洞 #50172)

  • BLACKHOLE如果已启用 DTrace 探测器,则存储引擎无法在 Solaris 和 OpenSolaris 上加载 。(错误#47748,错误#11755909)

  • 一些错误消息包括文字mysql 数据库名称而不是数据库名称的参数。(缺陷 #46792,缺陷 #11755079)

  • ER_TABLEACCESS_DENIED_ERROR 错误消息中,命令名称参数可能被截断。(漏洞 #45355,漏洞 #11753840)

  • 为了防止将来可能发生的重定位错误libmysyslibmystrings、 和libdbug 已从普通库更改为noinst libtool帮助库,不再作为单独的库安装。(错误#29791,错误#11746931)

  • 当有多个可能的访问时,可以选择次优的查询执行range 计划ref。现在优先考虑匹配最多部分的键,并从中选择最好的一个。(错误#26106,错误#11746406)

  • 使用字符集在列的部分索引上搜索数据 utf8失败。(漏洞 #24858)

  • 对于带有 的查询GROUP BYFORCE INDEX当它会导致更昂贵的查询执行计划时,它应该被忽略。(错误#18144,错误#11745649)