MySQL5.7更新的内容

  官网地址:MySQL :: MySQL 5.7 Reference Manual :: 1.3 What Is New in MySQL 5.7

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Mysql5.7参考手册  /  一般信息  /什么是最新的

1.3如何在mysql中找到新的内容

本节总结了如何添加、删除和删除mysq7.7。附文部分列出了在mysql5.7中添加、反对或删除的mysql服务器选项和变量; 第1.4节,"在mysq7.7中添加、反对或删除的服务器和状态变量和选项" .

  • 在mysql5.7中添加的特征

  • 在mysql中被弃用的特征

  • 在mysql5.7中删除的特征

在mysql5.7中添加的特征

mysql5.7增加了以下特点:

  • 安全改善。  增加了这些加强安保措施:

    • In MySQL 8.0,caching_sha2_password 是默认的身份验证插件。使mysql5.7客户机能够使用使用身份验证的帐户连接到8.0服务器 caching_sha2_password ,mysql5.7客户端库和客户端程序支持 caching_sha2_password 客户端身份验证插件截至mysql5.7.23。这提高了mysql5.7与mysq8.0和更高服务器的兼容性。看 第6.4.1.4节,"缓存Sha2-可插入认证" .

    • 服务器现在需要在 mysql.user 系统表有一个非空的plugin 列值和无效帐户的一个空值。有关服务器升级指令,请参阅 Section 2.10.3, “Changes in MySQL 5.7” .建议发展管理局也将使用 mysql_old_password 使用认证插件mysql_native_password 相反,因为 mysql_old_password 已经移走了。有关帐户更新指引,请参阅 第6.4.1.3节,"从4.1前密码攻击和mysql_old_密码插件转移出去" .

    • Mysql现在使数据库管理员能够建立一个自动密码过期的策略:任何使用已超过其允许使用寿命的帐户连接到服务器的用户都必须更改密码。详情请参阅 第6.2.11节,"密码管理" .

    • 管理员可以锁定和解锁帐户,以更好地控制谁可以登录。详情请参阅 第6.2.15节,"帐户锁定" .

    • 为了更方便地支持安全连接,使用开放SSL编译的mysql服务器可以在启动时自动生成缺失的SSL和RSA证书以及密钥文件。看 第6.3.3.1节,"使用mysql创建SSL和RSA证书和键" .

      所有服务器,如果没有为SSL显式配置,如果在数据目录中发现必要的SSL文件,则尝试在启动时自动启用SSL。看 第6.3.1节,"配置mysql使用加密连接" .

      此外,mysql分布式包括 Mysql_ssl_rsa_设立 可以手动调用以创建SSL和RSA键和证书文件的实用性。详情请参阅 第4.4.5节,"Mysql_sl_rsa_安装-创建SSL/rsa文件" .

    • 部署部署 初始化 默认情况下是安全的。以下更改已作为默认部署特性实现:

      • 安装过程只创建一个单一的 root 帐户, 'root'@'localhost' ,自动为这个帐户生成一个随机密码,并标记密码过期。mysql管理员必须root 使用随机密码并分配新密码。(服务器将随机密码写入错误日志。)

      • 安装不创建匿名用户账户。

      • 安装产生否test 数据库。

      详情请参阅 第2.9.1节,"初始化数据目录" .

    • Mysql企业版现在提供数据掩蔽和反身份识别功能。数据掩蔽通过用替代品替代实际值来隐藏敏感信息。mysql企业数据掩蔽和去识别功能能够使用混淆(去除识别特征)、生成格式化的随机数据和数据替换或替换等多种方法来掩盖现有数据。详情请参阅 第6.5节,"mysql企业数据掩蔽和去除识别" .

    • Mysql现在将授予指定管道上的客户端的访问控制设置到窗口上成功通信所需的最小值。更新的mysql客户端软件可以打开命名的管道连接,而无需任何附加配置。如果旧客户机软件不能立即升级,新的 named_pipe_full_access_group 系统变量可以用来授予Windows组打开指定管道连接的必要权限。充分进入小组的成员资格应受到限制,并应是临时的。

  • sql模式改变。  事务存储引擎的严格SQL模式(STRICT_TRANS_TABLES 现在默认启用。

    执行情况 ONLY_FULL_GROUP_BY sql模式已经变得更加复杂,不再拒绝以前被拒绝的确定性查询。因此,该模式现在默认启用,只禁止包含无法保证在组中唯一确定的表达式的非确定性查询。

    … ERROR_FOR_DIVISION_BY_ZERO , NO_ZERO_DATE ,以及 NO_ZERO_IN_DATE sql模式现在被弃用,但默认情况下被启用。长期的计划是将它们包含在严格的SQL模式中,并在未来的mysql发布中删除它们作为显式模式。看 如何更改mysql模式 .

    对默认SQL模式的更改导致默认的 sql_mode 采用这些模式的系统变量值: ONLY_FULL_GROUP_BY , STRICT_TRANS_TABLES , NO_ZERO_IN_DATE , NO_ZERO_DATE , ERROR_FOR_DIVISION_BY_ZERO , NO_AUTO_CREATE_USER ,以及 NO_ENGINE_SUBSTITUTION .

  • 在线更改桌子。  ALTER TABLE 现在支持一个 RENAME INDEX 重命名索引的条款。更改是在没有表复制操作的情况下进行的。它适用于所有的存储引擎。看 第13.1.8节,"更改表格说明" .

  • NGREG和MECAB全文解析器插件。  Mysql提供一个内置的支持中文、日文和韩文(CJK)的全文NGMA解析器插件,以及一个可安装的日本文MECAB全文解析器插件。

    详情请参阅 12.9.8节,"NGMA全文解析器" ,以及 12.9.9节,"MECAB全文解析器插件" .

  • 因诺布增强。  这些InnoDB 增加了改进:

    • VARCHAR 可利用一个地方增加圆柱尺寸 ALTER TABLE ,如本例子所示:

      ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);

      这是正确的,只要长度字节的数量VARCHAR 列保持不变。用于 VARCHAR 大小为0至255字节的列,编码该值需要一个字节长。用于VARCHAR 列的大小为256字节或以上,需要两个长字节。结果,在原地 ALTER TABLE 只支持增加VARCHAR 列大小从0到255字节,或从256字节到更大的尺寸.在原地ALTER TABLE 不支持增加的规模VARCHAR 列从小于256字节到等于或大于256字节的大小.在这种情况下,所需的长度字节数从1变为2,仅由表副本支持(ALGORITHM=COPY ).

      减少的VARCHAR 使用适当的尺寸ALTER TABLE 是不支持的。减少的 VARCHAR 尺寸需要一份表格副本(ALGORITHM=COPY ).

      详情请参阅 Section 14.13.1, “Online DDL Operations” .

    • DDL的表现InnoDB 通过优化临时表格,改进了临时表格 CREATE TABLE , DROP TABLE , TRUNCATE TABLE ,以及 ALTER TABLE 声明。

    • InnoDB 临时表元数据不再存储InnoDB 系统表。相反,一个新桌子, INNODB_TEMP_TABLE_INFO ,向用户提供活动临时表的快照。表中包含元数据和关于所有用户和系统创建的在给定表中活动的临时表的报告InnoDB 实例。表是在第一个SELECT 语句与之相反.

    • InnoDB 现在支持千年发展目标支持的空间数据类型。在发布之前, InnoDB 以二进制存储空间数据BLOB 数据。 BLOB 仍然保留基本数据类型,但空间数据类型现在被映射到一个新的 InnoDB 内部数据类型, DATA_GEOMETRY .

    • 现在有一个单独的桌子空间供所有非压缩的InnoDB 临时桌子。新的表空间总是在服务器启动时重新创建,位于DATADIR 默认的。新添加的配置文件选项, innodb_temp_data_file_path ,允许使用者定义的临时数据文件路径。

    • 无缺点 一些新的选择和扩展的能力加强了功能性。看 4.6.1,"因诺杜布离线文件检查和实用工具" .

    • 对于普通和压缩的临时表和相关对象,一种新型的非重做撤销日志现在都存在于临时表空间中。详情请参阅 14.6.7节,"撤销日志" .

    • InnoDB 缓冲池转储和负载操作得到加强。新的系统变量, innodb_buffer_pool_dump_pct 允许您指定每个缓冲池中用于读取和转储的最新使用页面的百分比。当其他I/O活动由 InnoDB 背景任务, InnoDB 尝试使用 innodb_io_capacity 布景。

    • 支持增加到InnoDB 用于全文分析器插件。有关全文解析器插件的信息,请参阅 全文解析器插件 和 编写全文解析器插件 .

    • InnoDB 支持多个页面清洁线程从缓冲池实例中冲洗脏页。新的系统变量, innodb_page_cleaners ,用于指定页面清洁线程的数量。的默认值1 维护以前的配置,其中有一个单页清洁线程.这一改进是基于mysql5.6中完成的工作,其中引入了一个单一页面的清洁线程,以卸载缓冲池冲洗工作。 InnoDB 主线。

    • 在线DDL 向下列常规和分区行动提供支助InnoDB 表:

      • OPTIMIZE TABLE

      • ALTER TABLE ... FORCE

      • ALTER TABLE ... ENGINE=INNODB (当运行在 InnoDB 表)

        在线DDL 支持减少了表重建时间,并允许并发DML。看 第14.13节,"因特网和网上DDL" .

    • 在Linux上提供的非易失性内存(NVM)文件系统 原子的 写作能力,使得 InnoDB 双写缓冲区 多余的。…InnoDB 双写缓冲区自动禁用系统表空间文件( 数据文件 )位于支持原子写入的引信设备上。

    • InnoDB 支持 可移动表空间 分区的特点 InnoDB 表和个人 InnoDB 表分区。这种增强简化了分区表的备份过程,并允许在mysql实例之间复制分区表和单个表分区。详情请参阅 第14.6.1.3节,"进口国际贸易统计表" .

    • … innodb_buffer_pool_size 参数是动态的,允许您在不重新启动服务器的情况下调整缓冲池的大小。调整大小的操作,包括将页面移动到内存中的一个新位置,以块执行。使用新的数据块大小是可配置的 innodb_buffer_pool_chunk_size 配置选项。您可以使用新的程序监控调整进度 Innodb_buffer_pool_resize_status 状况变量。详情请参阅 在线配置输入缓冲池大小 .

    • 多线程页面清洁支持(innodb_page_cleaners )延长至关闭和恢复阶段。

    • InnoDB 支持使用空间数据类型索引SPATIAL 指数,包括 ALTER TABLE ... ALGORITHM=INPLACE 网上操作(ADD SPATIAL INDEX ).

    • InnoDB 在创建或重建索引时执行批量负载.这种创建索引的方法被称为 “ 分类索引构建 ” .这种改进提高了索引创建的效率,也适用于全文索引。一种新的全局配置选项, innodb_fill_factor 定义在一个排序的索引构建过程中,每个页面上填充数据的空间百分比,剩余空间保留给未来的索引增长。详情请参阅 14.6.2.3节,"分类索引构建" .

    • 新的日志记录类型(MLOG_FILE_NAME )用于标识自上次检查点以来被修改过的表空间。这种增强简化了崩溃恢复期间的表空间发现,并取消了在重做日志应用程序之前对文件系统的扫描。有关此增强的好处,请参阅 碰撞恢复过程中的平板空间发现 .

      这种增强改变了重做日志格式,要求在从mysq5.7.5升级到或降级之前将mysql干净地关闭。

    • 可以截断位于撤销表空间中的撤销日志。此功能是使用 innodb_undo_log_truncate 配置选项。详情请参阅 缩短撤销表空间 .

    • InnoDB 支持本地分区。以前,InnoDB 依靠于 ha_partition 为每个分区创建一个处理程序对象。与本地分区,一个分区InnoDB 表使用单个分区感知处理程序对象。这种增强减少了分区所需的内存量InnoDB 表格。

      从我的5.7.9, Mysql_升级的 寻找并尝试升级分区 InnoDB 使用ha_partition 管理员。此外,在mysql5.7.9及以后的版本中,您可以在 Mysql 客户使用 ALTER TABLE ... UPGRADE PARTITIONING .

    • InnoDB 支持使用一般表空间的创建CREATE TABLESPACE 语法。

      CREATE TABLESPACE `tablespace_name`
        ADD DATAFILE 'file_name.ibd'
        [FILE_BLOCK_SIZE = n]

      一般表空间可以在mysql数据目录之外创建,可以保存多个表,并支持所有行格式的表。

      在一般表空间中添加表格 或 语法。 CREATE TABLE tbl_name ... TABLESPACE [=] tablespace_nameALTER TABLE tbl_name TABLESPACE [=] tablespace_name

      详情请参阅 14.6.3.3节,"一般表空间" .

    • DYNAMIC 替换 COMPACT 作为隐含的默认行格式InnoDB 表格。一种新的配置选项, innodb_default_row_format ,指定默认值InnoDB 排式。详情请参阅 定义表格的行格式 .

    • 从我的5.7.11开始,InnoDB 支持每个表表空间的数据终止加密。加密是通过指定 ENCRYPTION 在创建或更改InnoDB 表这个功能依赖于keyring 用于加密密钥管理的插入器。详情请参阅 Section 6.4.4, “The MySQL Keyring” ,以及 第14.14节,"因诺布数据----休息加密" .

    • 在我的数据5.7.24中, 扎利布图书馆 与mysql捆绑的版本从1.2.3版本提高到1.2.11版本。mysql是在兹利布库的帮助下实现压缩的。

      如果你用InnoDB 压缩桌,见 Section 2.10.3, “Changes in MySQL 5.7” 相关的升级影响。

  • JSON支持。  从mysql5.7.8开始,mysql支持本地人 JSON 类型。JSON值不作为字符串存储,而是使用内部二进制格式,允许对文档元素进行快速读取访问。存放于JSON 每当插入或更新列时,都会自动验证,而无效的文档会产生错误。JSON文档在创建时进行规范化,可以使用大多数比较操作符进行比较,例如: = ,< , <= ,> , >= ,<> , != ,以及<=> ;关于支持的操作符以及mysql在比较时遵循的优先级和其他规则的信息JSON 价值观,看 JSON值的比较和排序 .

    Mysql5.7.8还介绍了一些与JSON 价值观。这些职能包括:

    • 创建的功能JSON 价值观: JSON_ARRAY() , JSON_MERGE() ,以及 JSON_OBJECT() .看 第12.17.2节,"创建JSON值的功能" .

    • 搜索功能JSON 价值观: JSON_CONTAINS() , JSON_CONTAINS_PATH() , JSON_EXTRACT() , JSON_KEYS() ,以及 JSON_SEARCH() .看 第12.17.3节,"搜索JSON值的功能" .

    • 修改的功能JSON 价值观: JSON_APPEND() , JSON_ARRAY_APPEND() , JSON_ARRAY_INSERT() , JSON_INSERT() , JSON_QUOTE() , JSON_REMOVE() , JSON_REPLACE() , JSON_SET() ,以及 JSON_UNQUOTE() .看 第12.17.4节,"修改JSON值的功能" .

    • 提供信息的功能 JSON 价值观: JSON_DEPTH() , JSON_LENGTH() , JSON_TYPE() ,以及 JSON_VALID() .看 第12.17.5节,"返回JSON值属性的函数" .

    在mysql5.7.9中,你可以使用 作为 .当列标识符可以出现在SQL语句中时,它作为列的别名工作,包括 , ,以及 条款。这包括 , , , ,以及其他的SQL语句。左手边一定是 列标识符(而不是别名)。右侧是一个引用的JSON路径表达式,根据返回为列值的JSON文档进行评价。 column->pathJSON_EXTRACT(column, path)WHEREORDER BYGROUP BYSELECTUPDATEDELETECREATE TABLEJSON

    Mysql5.7.22添加下列JSON函数:

    • 两个JSON聚合函数 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() . JSON_ARRAYAGG() 以列或表达式作为参数,并将结果聚合为单个JSON 安排。表达式可以对任何mysql数据类型进行评价;这不一定是JSON 价值。 JSON_OBJECTAGG() 取两个列或表达式,它将其解释为一个键和一个值;它将结果作为单个返回JSON 反对。有关详情及例子,请参阅 第12.19节,"综合职能" .

    • JSON效用函数 JSON_PRETTY() ,其产出是JSON 以易读格式表示的值;每个JSON对象成员或数组值都在单独的一行上打印,而一个子对象或数组是针对其父对象的两个空格。

      此函数还使用可以作为JSON值解析的字符串。

      另见 Section 12.17.6, “JSON Utility Functions” .

    • JSON效用函数 JSON_STORAGE_SIZE() ,它在部分更新之前以字节返回用于JSON文档二进制表示的存储空间(见前项)。

      此函数还接受JSON文档的有效字符串表示形式。为了这个价值, JSON_STORAGE_SIZE() 在转换为JSON文档后返回其二进制表示形式使用的空间。对于一个包含JSON文档的字符串表示形式的变量, JSON_STORAGE_FREE() 回报为零。如果不能将其参数作为有效的JSON文档解析,则任何一个函数都会产生错误, NULL 如果论点是 NULL .

      有关详情及例子,请参阅 Section 12.17.6, “JSON Utility Functions” .

    • 一个JSON合并函数,旨在符合 7396RFC . JSON_MERGE_PATCH() 当用于2个JSON对象时,将它们合并为一个JSON对象,该对象具有以下集合的一个成员联盟:

      • 第一个对象的每个成员,其在第二个对象中没有具有相同键的成员。

      • 第二个对象的每个成员,其在第一个对象中没有具有相同密钥的成员,且其值不是JSON null 很真实。

      • 每个成员拥有两个对象中存在的键,其在第二个对象中的值不是JSONnull 很真实。

      作为这项工作的一部分, JSON_MERGE() 职能已改名 JSON_MERGE_PRESERVE() . JSON_MERGE() 继续被确认为 JSON_MERGE_PRESERVE() 在mysql5.7中,但是现在被反对,并且在未来的mysql版本中会被删除。

      有关详情及例子,请参阅 第12.17.4节,"修改JSON值的功能" .

    看 第12.17.3节,"搜索JSON值的功能" ,详情请参阅-> 和 JSON_EXTRACT() .有关mysql5.7中的JSON路径支持的信息,请参阅 搜索和修改JSON值 .另见 对生成的列进行索引,以提供JSON列索引 .

  • 系统和状态变量。  系统和状态变量信息现在可以在性能模式表中提供,而不需要使用 INFORMATION_SCHEMA 获取这些变量的表格。这也影响了 SHOW VARIABLES 和 SHOW STATUS 声明。它的价值 show_compatibility_56 系统变量影响从系统和状态变量语句和表生成的输出和所需的权限。有关详情,请参阅 第5.1.7节,"服务器系统变量" .

    注意事项

    默认的 show_compatibility_56 是 OFF .需要5.6行为的应用程序应该将这个变量设置为ON 直到它们迁移到系统变量和状态变量的新行为。看 第25.20节,"迁移到性能模式系统和状态变量表"

  • 系统的架构。  Mysql分布现在包括 sys 架构,这是一组对象,帮助DBA和开发人员解释由性能架构收集的数据。 sys 架构对象可以用于典型的调整和诊断用例.详情请参阅 Chapter 26, Mysql系统模式 .

  • 环境处理。  Mysql现在支持堆叠诊断区域。当推动诊断区域堆栈时,第一(当前)诊断区域将成为第二(堆叠)诊断区域,并创建一个新的当前诊断区域作为副本。在条件处理程序中,执行的语句修改新的当前诊断区域,但是 GET STACKED DIAGNOSTICS 可用于检查堆叠的诊断区域,以获取有关导致处理程序激活的条件的信息,与处理程序本身内的当前条件无关。(以前只有一个诊断区域。要检查处理程序中的操作激活条件,在执行任何可能更改它的语句之前,必须检查这个诊断区域。)见 第13.6.7.3节,"获得诊断说明" ,以及 第13.6.7.7节,"mysql诊断区" .

  • 优化器。  增加了这些优化器改进:

    • EXPLAIN可用于获取在指定连接中执行的可解释语句的执行计划:

      EXPLAIN [options] FOR CONNECTION connection_id;

      详情请参阅 第8.8.4节,"获取指定连接的执行计划信息" .

    • 在单个SQL语句中向优化器提供提示是可能的,这样可以对语句执行计划进行比使用 optimizer_switch 系统变量。也允许使用提示语EXPLAIN ,让您了解提示如何影响执行计划。详情请参阅 8.9.3节,"优化提示" .

    • prefer_ordering_index flag.  在默认情况下,mysql尝试使用一个有序的索引ORDER BY 或GROUP BY 有问题的人LIMIT 当优化器确定这会导致更快的执行时。因为在某些情况下,为此类查询选择不同的优化实际上性能更好,所以从mysql5.7.33可以通过设置 prefer_ordering_index 支持off .

      这个标志的默认值是 on .

      有关详情及例子,请参阅 8.9.2节,"可切换优化" ,以及 8.2.1.17节,"限制查询优化" .

  • 启动器。  在此之前,表最多可以为每个触发事件组合设置一个触发器(INSERT , UPDATE , DELETE )及行动时间(BEFORE ,AFTER )。这一限制已经取消,并允许多个触发器。详情请参阅 第23.3节,"使用触发器" .

  • 伐木。  增加了这些记录功能:

    • 此前,在UNIX和类似unx的系统中,mysql支持将服务器错误日志发送到 syslog 是通过 MysqLD_安全 捕获服务器错误输出并传递到syslog .服务器现在包括本机syslog 已扩大到包括窗户。有关发送服务器错误输出到 syslog ,看 第5.4.2节,"错误日志" .

    • … Mysql 客户现在有一个 --syslog 使交互式发言被送交系统的备选办法 syslog 便利。对匹配默认语句的日志进行抑制 “ 忽视 ” 模式列表("*IDENTIFIED*:*PASSWORD*" ),以及与使用--histignore 选择。看 Section 4.5.1.3, “mysql Client Logging” .

  • 生成列。  Mysql现在支持CREATE TABLE 和 ALTER TABLE 声明。生成列的值是从列创建时指定的表达式中计算出来的.生成的列可以是虚拟的(计算) “ 在空中 ” 当读取行时)或存储(当插入或更新行时计算)。详情请参阅 13.1.18.7节,"创建表格和生成列" .

  • 我的客户。  以前, 控制+c 在mysql中,如果有一个语句,则中断当前语句,如果没有,则退出mysql。现在 控制+c 中断当前语句,如果有一个,或取消任何部分输入行,但不退出。

  • 数据库名称改写与MysqlBengn。  数据库的重新命名 Mysqlbin31- 当从使用基于行的格式编写的二进制日志读取时,现在支持使用 --rewrite-db 在mysql5.7.1中添加了选项。

    本选项采用的是 .您可以通过多次指定选项来实现多个重写规则。 --rewrite-db='dboldname->dbnewname'

  • 处理分区表。  …HANDLER 语句现在可以与用户分区表一起使用。这些表可以使用任何可用的分区类型(参见 第22.2节,"分区类型" ).

  • 索引条件对分区表的下拉支持。  使用 InnoDB 或 MyISAM 存储引擎可以使用在mysql5.6中引入的索引条件推降优化。看 第8.2.1.5节,"指数条件的触发优化" ,详情请参阅。

  • 没有对更改表的验证支持。..交换分区。  截至我的5.7.5, ALTER TABLE ... EXCHANGE PARTITION 语法包括一个可选的{WITH|WITHOUT} VALIDATION 条款。何时WITHOUT VALIDATION 是指定的, ALTER TABLE ... EXCHANGE PARTITION 在与分区交换填充表时,不执行逐行验证,允许数据库管理员承担确保行在分区定义的范围内的责任。WITH VALIDATION 是默认行为,不需要显式指定.详情请参阅 第22.3.3节,"分区和子分区与表格交换" .

  • 源转储线程改进。  对源转储线程进行重构,以减少锁争用并提高源吞吐量。之前的mysq5.7.2,转储线程每当读取事件时都会锁定二进制日志;在mysql5.7.2及以后,只在读取上次成功写入事件结束时才会持有此锁。这意味着多个转储线程现在能够从二进制日志文件中并发读取,并且转储线程现在能够在客户端写入二进制日志时读取。

  • 字符集支持。  Mysql5.7.4包括gb18030 支持中国国家标准GB18030字符集的字符集。有关mysql字符集支持的更多信息,请参阅 Chapter 10, 字符集、拼贴、统一码 .

  • 改变复制源不停止奴隶。  在mysql5.7.4及以后,执行的严格要求STOP SLAVE 在签发之前CHANGE MASTER TO 声明被删除。而不是依赖于复制品是否被停止, CHANGE MASTER TO 现在取决于复制的SQL线程和复制的I/O线程的状态;这些线程中哪一个被停止或运行,现在决定了可以或不能使用的选项。 CHANGE MASTER TO 在某一特定时间点的陈述。作出这一决定的规则如下:

    • 如果SQL线程停止,您可以执行 CHANGE MASTER TO 使用任何组合RELAY_LOG_FILE , RELAY_LOG_POS ,以及 MASTER_DELAY 选项,即使副本I/O线程正在运行。当I/O线程运行时,此语句不可能使用其他选项。

    • 如果停止了I/O线程,您可以执行 CHANGE MASTER TO 使用此语句的任何选项(任何允许的组合) 除了 RELAY_LOG_FILE , RELAY_LOG_POS ,或 MASTER_DELAY ,即使当SQL线程运行时。当I/O线程运行时,可能不会使用这三种选项。

    • 在发布之前,必须停止SQL线程和I/O线程CHANGE MASTER TO ... MASTER_AUTO_POSITION = 1 .

    可以使用副本SQL和I/O线程检查当前状态。SHOW SLAVE STATUS .

    如果您正在使用基于声明的复制和临时表,则可以使用CHANGE MASTER TO A之后的声明STOP SLAVE 声明在副本上留下临时表。作为这一系列改进的一部分,现在每当CHANGE MASTER TO 是在STOP SLAVE 在使用基于声明的复制时Slave_open_temp_tables 仍然大于0。

    详情请参阅 第13.4.2.1节,"将主系统改为报表" ,以及 16.3.7节,"故障转移期间的转换源" .

  • 测试套件。  mysql测试套件现在使用InnoDB 作为默认存储引擎。

  • 多源复制现在是可能的。  Mysql多源复制将从多个来源复制到副本的能力。mysql多源复制拓扑结构可以用于将多个服务器备份到单个服务器,合并表碎片,并将多个服务器的数据合并到单个服务器。看 Section 16.1.5, “MySQL Multi-Source Replication” .

    作为mysql多源复制的一部分,已经添加了复制通道。复制通道使副本能够打开多个连接来复制,每个通道都是源的连接。看 第16.2.2节,"复制渠道" .

  • 组复制性能架构表.  Mysql5.7向性能模式添加一些新表,以提供有关复制组和通道的信息。这些表格如下:

    • replication_applier_configuration

    • replication_applier_status

    • replication_applier_status_by_coordinator

    • replication_applier_status_by_worker

    • replication_connection_configuration

    • replication_connection_status

    • replication_group_members

    • replication_group_member_stats

    所有这些表格都是以mysql5.7.2添加的,只有 replication_group_members 和 replication_group_member_stats 是在我的5.7.6中加入的。详情请参阅 第25.12.11节,"性能架构复制表" .

  • 组复制SQL。  为了控制组复制,在mysq5.7.6中添加了下列语句:

    • START GROUP_REPLICATION

    • STOP GROUP_REPLICATION

    详情请参阅 第13.4.3节,"控制组复制的SQL语句" .

在mysql中被弃用的特征

下列特性在mysql5.7中被弃用,可能在以后的系列中被删除。在显示替代品的地方,应用程序应当更新以使用它们。

对于那些使用mysql5.7中已在较高的mysql系列中删除的特性的应用程序,如果从mysql5.7源代码复制到较高系列副本,语句可能会失败,或者可能对源代码和副本产生不同的影响。为了避免这些问题,应当修订使用5.7中所不采用的特性的应用程序,以避免这些特性,并在可能的情况下使用替代品。

  • … ERROR_FOR_DIVISION_BY_ZERO , NO_ZERO_DATE ,以及 NO_ZERO_IN_DATE sql模式现在被弃用,但默认情况下被启用。长期的计划是将它们包含在严格的SQL模式中,并在未来的mysql发布中删除它们作为显式模式。

    反对者 ERROR_FOR_DIVISION_BY_ZERO , NO_ZERO_DATE ,以及 NO_ZERO_IN_DATE sql模式仍然得到识别,因此命名它们的语句不会产生错误,但在未来的mysql版本中将被删除。为了提前为不存在这些模式名称的mysql版本做准备,应用程序应该修改,不要引用它们。看 如何更改mysql模式 .

  • 这些SQL模式现在已被弃用;希望在未来的mysql版本中删除它们: DB2 , MAXDB , MSSQL , MYSQL323 , MYSQL40 , ORACLE , POSTGRESQL , NO_FIELD_OPTIONS , NO_KEY_OPTIONS , NO_TABLE_OPTIONS .这些反对意见有两个含义:

    • 指定一个不赞成的模式 sql_mode 系统变量产生警告.

    • 与…MAXDB 启用了sql模式,使用CREATE TABLE 或ALTER TABLE 加一个 TIMESTAMP 表格的列会产生警告。

  • 对会计管理报表的修改使以下功能过时。他们现在被反对:

    • 使用GRANT 创造用户。相反,使用CREATE USER .根据这一做法 NO_AUTO_CREATE_USER sql模式对于 GRANT 语句,所以它也被反对。

    • 使用GRANT 修改权限分配以外的帐户属性.这包括身份验证、SSL和资源限制属性。相反,在开设账户的时间内建立这类财产。CREATE USER 或修改后用 ALTER USER .

    • IDENTIFIED BY PASSWORD 'auth_string' 语法的CREATE USER 和GRANT .相反,使用 为了 和 ,在哪里 值是与指定的插件兼容的格式。 IDENTIFIED WITH auth_plugin AS 'auth_string'CREATE USERALTER USER'auth_string'

    • …PASSWORD() 功能被弃用,在任何情况下都应该避免。因此, 语法也被抛弃了。 语法没有被抛弃;然而, 现在是分配密码的首选语句。 SET PASSWORD ... = PASSWORD('auth_string')SET PASSWORD ... = 'auth_string'ALTER USER

    • …old_passwords 系统变量。帐户身份验证插件不能在 mysql.user 系统表,因此任何从清楚文本字符串中分配密码的语句都可以在将字符串存储到 mysql.user 表这使得 old_passwords 太过分了。

  • 查询缓存被弃用。反对包括:

    • …FLUSH QUERY CACHE 和 RESET QUERY CACHE 声明。

    • SQL_CACHE 和 SQL_NO_CACHE SELECT 修饰剂。

    • 这些系统变量: have_query_cache , ndb_cache_check_time , query_cache_limit , query_cache_min_res_unit , query_cache_size , query_cache_type , query_cache_wlock_invalidate .

    • 这些状况变量: Qcache_free_blocks , Qcache_free_memory , Qcache_hits , Qcache_inserts , Qcache_lowmem_prunes , Qcache_not_cached , Qcache_queries_in_cache , Qcache_total_blocks .

  • 以前, --transaction-isolation 和 --transaction-read-only 服务器启动选项与 tx_isolation 和 tx_read_only 系统变量。为了在启动选项和系统变量名称之间更好的名称对应, transaction_isolation 和 transaction_read_only 作为一个化名 tx_isolation 和 tx_read_only .… tx_isolation 和 tx_read_only 变量现在被弃用了;希望它们在mysq8.0中被删除。申请应按使用情况加以调整 transaction_isolation 和 transaction_read_only 相反。

  • … --skip-innodb 选项及其同义词(--innodb=OFF , --disable-innodb ,等等)被反对。这些选项对mysql5.7没有影响。因为InnoDB 不能残疾。

  • 客户端--ssl 和 --ssl-verify-server-cert 选项被否决。使用 --ssl-mode=REQUIRED 代替--ssl=1 或 --enable-ssl .使用--ssl-mode=DISABLED 代替--ssl=0 , --skip-ssl ,或 --disable-ssl .使用 --ssl-mode=VERIFY_IDENTITY 代替 --ssl-verify-server-cert 各种选择。(服务器端 --ssl 选择是  deprecated.)

    对于C原料药,MYSQL_OPT_SSL_ENFORCE 和 MYSQL_OPT_SSL_VERIFY_SERVER_CERT 备选办法mysql_options() 与客户方对应 --ssl 和 --ssl-verify-server-cert 选项被否决。使用 MYSQL_OPT_SSL_MODE 有期权价值的SSL_MODE_REQUIRED 或 SSL_MODE_VERIFY_IDENTITY 相反。

  • …log_warnings 系统变量和--log-warnings 服务器选项被反对。使用 log_error_verbosity 系统变量。

  • …--temp-pool 服务器选项被否决。

  • … binlog_max_flush_queue_time 系统变量在mysql5.7中无所作为,在mysql5.7.9中被弃用。

  • …innodb_support_xa 系统变量,使InnoDB 支持两个阶段的提交,在xa事务中,是反对,从mysql5.7.10。InnoDB 支持两个阶段的提交,在fa事务总是启用,从mysql5.7.10。

  • … metadata_locks_cache_size 和 metadata_locks_hash_instances 系统变量被弃用。这些对我来说毫无用处。

  • …sync_frm 系统变量被弃用。

  • 全球性的 character_set_database 和 collation_database 系统变量被弃用;期望它们在未来的mysql版本中被删除。

    向会议分配价值 character_set_database 和 collation_database 系统变量被弃用,任务产生警告。预期会话变量只能在未来的mysql版本中读取,并向它们分配任务以产生错误,同时还可以读取会话变量以确定默认数据库的数据库字符集和排序。

  • 的全球范围 sql_log_bin 系统变量已被弃用,这个变量现在只能用会话范围设置。声明 SET GLOBAL SQL_LOG_BIN 现在产生一个错误。仍然有可能解读全球 sql_log_bin 但这样做会引起警告。您应该现在就行动,从应用程序中删除读取此值时的任何依赖关系;全局范围 sql_log_bin 在mysql8.0中移除。

  • 随着数据词典在mysql8.0中的引入, --ignore-db-dir 备选办法和 ignore_db_dirs 系统变量变得多余,在该版本中被删除。因此,在mysql5.7中反对使用它们。

  • GROUP BY 默认地隐式排序(即在没有ASC 或 DESC ),但依靠的是GROUP BY 在mysql5.7中进行排序是不可取的。为了实现特定的分组结果排序顺序,最好使用给定的排序顺序,使用显式ASC 或 DESC 设计者GROUP BY 列或提供ORDER BY 条款。GROUP BY 排序是一个mysql扩展,在未来的版本中可能会改变;例如,使优化器能够以它认为最有效的方式排序分组,并避免排序开销。

  • EXTENDED 和 PARTITIONS 的关键词 EXPLAIN 声明被反对。这些关键词仍然得到承认,但现在没有必要,因为它们的效果总是被启用的。

  • …ENCRYPT() , ENCODE() , DECODE() , DES_ENCRYPT() ,以及 DES_DECRYPT() 加密函数被弃用。用于 ENCRYPT() ,考虑使用 SHA2() 取而代之的是单向购物。其他人,考虑使用 AES_ENCRYPT() 和 AES_DECRYPT() 相反。… --des-key-file 备选办法: have_crypt 系统变量DES_KEY_FILE 备选办法 FLUSH 声明和声明 HAVE_CRYPT 木棉 选择也被反对。

  • …MBREqual() 空间功能不受欢迎。使用 MBREquals() 相反。

  • 本报告所述的职能 第12.16.4节,"用WGB值创建几何值的函数" 以前接受W2B字符串或几何参数。几何参数的使用被反对。关于从使用几何参数转移查询的指南,请参阅该节。

  • INFORMATION_SCHEMA PROFILING 我不喜欢桌子。使用性能架构;参见 Chapter 25, Mysql性能模式 .

  • INFORMATION_SCHEMA INNODB_LOCKS 和 INNODB_LOCK_WAITS 表被弃用,将在mysql8.0中删除,该表格提供替换性能架构表。

  • 性能架构 setup_timers 表格被弃用,并在mysql8.0中删除,以及 TICK 划入 performance_timers 表

  • sys 图解 sys.version 视图被反对;希望它在未来的mysql版本中被删除。应调整受影响的应用程序,以使用替代方法。例如,使用 VERSION() 功能检索mysql服务器版本。

  • 治疗\N 作为一个同义词 NULL 在SQL语句中,反对使用并在mysql8.0中删除; NULL 相反。

    此更改不影响文本文件导入或导出操作LOAD DATA 或 SELECT ... INTO OUTFILE ,为此NULL 仍然由\N .看 第13.2.6节,"装载数据报表" .

  • PROCEDURE ANALYSE()语法被抛弃了。

  • 由 Mysql 客户和控制它的选择(--skip-comments , --comments 被反对。

  • MysqLD_安全 支持 syslog 输出被否决。使用本机服务器syslog 使用的是支持。看 第5.4.2节,"错误日志" .

  • 将含有特殊字符的数据库名称转换为5.1格式,并增加 #mysql50# 前缀被弃用了。因为这个, --fix-db-names 和 --fix-table-names 备选办法 Mysql31- 以及UPGRADE DATA DIRECTORY NAME 《公约》条款 ALTER DATABASE 声明也被反对。

    只支持从一个版本系列到另一个版本系列的升级(例如5至5.1,或5.1至5.5),因此不需要将旧的5.0数据库名转换为当前的mysql版本。作为一种变通办法,在升级到更新的版本之前,将mysql5.00安装升级为mysql5.1。

  • Mysql_31-all_db 功能已经整合到了mysql服务器, MysqDD .使用此功能初始化mysql安装,如果您以前调用 Mysql_31-all_db 手动地,调用 MysqDD 与… --initialize 或 --initialize-insecure 选项,取决于您是否希望服务器生成初始的随机密码 'root'@'localhost' 帐户。

    Mysql_31-all_db 如今被拒绝了,就像--bootstrap 选择 Mysql_31-all_db 通行证 MysqDD .

  • … Mysql_31-kin 效用受到反对。其他选择包括在服务器启动时使用--plugin-load 或 --plugin-load-add 选择,或在运行时使用INSTALL PLUGIN 声明。

  • … 解决方案 效用受到反对。 国家统计局调查 , 主人 ,或 挖掘 可以代替。

  • … 分解_堆积_沉淀物 效用受到反对。官方mysql构建的堆栈跟踪总是符号化的,因此不需要使用 分解_堆积_沉淀物 .

  • …mysql_kill() , mysql_list_fields() , mysql_list_processes() ,以及 mysql_refresh() cAPI函数被反对。相应的情况也是如此。COM_PROCESS_KILL , COM_FIELD_LIST , COM_PROCESS_INFO ,以及 COM_REFRESH 客户机/服务器协议命令。相反,使用 mysql_query() 执行一个 KILL , SHOW COLUMNS , SHOW PROCESSLIST ,或 FLUSH 声明,分别。

  • mysql_shutdown() cAPI函数被反对。相反,使用 mysql_query() 执行一个 SHUTDOWN 声明。

  • libmysqld 嵌入式服务器库在mysql5.7.19时被弃用。这些建议也遭到反对:

    • … Mysql_COM31- --libmysqld-libs , --embedded-libs ,以及 --embedded 选择权

    •  木棉 WITH_EMBEDDED_SERVER , WITH_EMBEDDED_SHARED_LIBRARY ,以及 INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR 选择权

    • (无证件) Mysql --server-arg 选择

    •  Mysql31- --embedded-server , --server-arg ,以及 --server-file 选择权

    •  Mysqltest_嵌入的 和 mysql_client_test_embedded 测试程序

    因为libmysqld 使用类似於libmysqlclient ,迁移路线远离libmysqld 很简单:

    1. 提供独立的mysql服务器( MysqDD ).

    2. 修改应用程序代码以删除特定的API调用libmysqld .

    3. 修改应用程序代码以连接到独立的mysql服务器。

    4. 修改构建脚本以使用 libmysqlclient 与其说 libmysqld .例如,如果你使用 Mysql_COM31- ,并以 --libs 选择而不是选择 --libmysqld-libs .

  • … 替换 效用受到反对。

  • 对DTERE的支持被反对。

  • …JSON_MERGE() 该功能在mysql5.7.22中被弃用。使用 JSON_MERGE_PRESERVE() 相反。

  • 支持在共享中放置表分区 InnoDB 表空间在mysql5.7.24时被弃用。共享表空间包括 InnoDB 系统表空间和一般表空间。有关在共享表空间中识别分区并将其移至每个表表空间的信息,请参阅 准备安装升级 .

  • 支持TABLESPACE = innodb_file_per_table 和TABLESPACE = innodb_temporary 有 CREATE TEMPORARY TABLE 在我的5.7.24中被拒绝。

  • --ndb 使惊愕 选择被反对。使用 恩德布_佩罗 实际上是有用的。

  • …myisam_repair_threads 系统变量 myisam_repair_threads 在以后的mysql发布中,对两者的支持都将被删除。

    来自mysql5.7.38,1(默认值)以外的值 myisam_repair_threads 做出警告。

在mysql5.7中删除的特征

下列项目已经过时,并在mysq5.75.7中删除。在显示替代品的地方,应用程序应当更新以使用它们。

对于使用mysql5.7中删除的特性的mysql5.6应用程序来说,如果从mysql5.6源代码复制到mysql5.7副本,语句可能会失败,或者对源代码和副本会产生不同的影响。为了避免这些问题,应该修改使用mysql5.7中删除的特性的应用程序,以避免这些特性,并在可能的情况下使用替代方法。

  • 删除了对使用较早的4.1密码哈希格式的密码的支持,其中涉及以下更改。使用不再支持的功能的应用程序必须修改。

    • mysql_old_password 删除认证插件。使用此插件的帐户在启动时禁用,服务器编写一个 “ 未知插件 ” 消息到错误日志.有关使用此插件的升级帐户的说明,请参阅 第6.4.1.3节,"从4.1前密码攻击和mysql_old_密码插件转移出去" .

    • --secure-auth 服务器和客户机程序的选项是默认的,但现在是无OP。它被反对;希望在未来的mysql版本中删除它。

    • --skip-secure-auth 服务器和客户机程序的选项不再支持,使用它会产生错误。

    • …secure_auth 系统变量只允许值为1;不再允许值为0.

    • 为了old_passwords 系统变量,一个值1(生成前4.1哈希)不再允许。

    • OLD_PASSWORD() 功能被删除。

  • 在mysql5.6.6中,2位数 YEAR(2) 数据类型被否决。支持 YEAR(2) 移走了。一旦升级到mysql5.7.5或更高,任何剩余的2位数 YEAR(2) 列必须转换为4位数YEAR 列重新可用。转换策略,请参阅 第11.2.5节,"2位数年(2)的限制和移至4位数年" .例如,跑 Mysql_升级的 升级后。

  • innodb_mirrored_log_groups 系统变量。唯一被支持的值是1,因此没有任何意义。

  • storage_engine 系统变量。使用 default_storage_engine 相反。

  • thread_concurrency 系统变量。

  • timed_mutexes 系统变量,没有影响。

  • IGNORE 条款 ALTER TABLE .

  • INSERT DELAYED 已不再支持。服务器识别但忽略了DELAYED 关键词,将插入作为非延迟插入处理,并生成 ER_WARN_LEGACY_SYNTAX_CONVERTED warning. ( “ 插入延迟不再支持。该说明改为插入。 ” ) Similarly, REPLACE DELAYED 作为非延迟替换来处理。你应该期待DELAYED 未来版本中要删除的关键词。

    另外,一些DELAYED -取消了相关的选择或特点:

    • --delayed-insert 选择 Mysql31- .

    • COUNT_WRITE_DELAYED , SUM_TIMER_WRITE_DELAYED , MIN_TIMER_WRITE_DELAYED , AVG_TIMER_WRITE_DELAYED ,以及 MAX_TIMER_WRITE_DELAYED 性能模式列 table_lock_waits_summary_by_table 表

    • Mysqlbin31- 不再写评论提到INSERT DELAYED .

  • 在窗户上使用自动化数据库 .sym 文件已被删除,因为它是多余的,使用了可用的本地符号链接支持 移动链接 .任何的.sym 文件符号链接现在被忽略,应该用使用创建的符号链接替换。 移动链接 .看 第8.12.3.3节,"在窗口数据库中使用符号链接" .

  • 未使用的--basedir , --datadir ,以及--tmpdir 备选办法 Mysql_升级的 已经搬走了。

  • 以前,程序选项可以完全指定或作为任何明确的前缀。例如, --compress 可选择: Mysql31- 作为 --compr ,但不是因为--comp 因为后者含糊不清。不再支持选项前缀;只接受完整选项。这是因为前缀可能会在程序实现新选项时产生问题,而当前明确的前缀可能在未来变得含糊不清。这一变化的一些含义:

    • --key-buffer 选择现在必须指定为:--key-buffer-size .

    • --skip-grant 选择现在必须指定为:--skip-grant-tables .

  • SHOW ENGINE INNODB MUTEX 输出被移除。可通过创建关于下列问题的视图生成可比信息: 性能架构 表格。

  • InnoDB 表空间监测器和 InnoDB 表显示器被移除。对于表显示器,可从表中获取相同的信息。 InnoDB INFORMATION_SCHEMA 表格。

  • 启用和禁用标准的专用表InnoDB 监视器和 InnoDB 锁定监视器(innodb_monitor 和 innodb_lock_monitor )由两个动态系统变量取代: innodb_status_output 和 innodb_status_output_locks .详情请参阅 第14.18节,"因诺德监测器" .

  • innodb_use_sys_malloc 和 innodb_additional_mem_pool_size 在mysql5.6.3中被弃用的系统变量被删除。

  •  Msql2mysql , mysql_convert_table_format , Mysql_芬d_Rows , Mysql_fix_延长 , Mysql_服务许可 , Mysql_怀温特 , Mysql_zAP , Mysqlaye ,以及 Mysqleb 公用事业。

  •  Mysql复制机 有用。替代品包括 Mysql31- 以及我的企业备份。

  •  二进制配置。 手稿。

  • INNODB_PAGE_ATOMIC_REF_COUNT 木棉 取消选择。

  • innodb_create_intrinsic 取消选择。

  • innodb_optimize_point_storage 备选办法和相关内部数据类型(DATA_POINT 和 DATA_VAR_POINT )已移走。

  • innodb_log_checksum_algorithm 取消选择。

  • …myisam_repair_threads 系统变量截至mysql5.7.39。

你可能感兴趣的:(mysql,数据库,运维,服务器)