相关文章推荐
酒量小的葡萄酒  ·  Power ...·  1 年前    · 
成熟的匕首  ·  【实践】VS Code(Visual ...·  1 年前    · 
无邪的煎饼  ·  WPF ...·  1 年前    · 

MySQL 升级最佳实践 --- MySQL 5.6升级至MySQL 8.0

背景介绍

MySQL 8.0 新特性

  1. 数据字典更改
  1. MySQL Server 8.0 合并了一个全局数据字典,其中包含有关事务表中数据库对象的信息。在mysql8之前的 MySQL 系列中,字典数据存储在元数据文件和非事务性系统表中
  1. 安全和帐户管理
  1. mysql系统数据库中的授权表现在是InnoDB(事务性)表。在MySQL8之前是MyISAM(非事务性)表
  2. 身份验证插件
  1. caching_sha2_password实现 SHA-256 密码哈希,使用缓存来解决连接时的延迟问题
  2. caching_sha2_password是MySQL8.0的首选身份验证插件,也是默认的身份验
  1. 配置更改
  1. 不兼容的更改
  1. MySQL存储引擎现在负责提供自己的分区处理程序,MySQL服务器不再提供通用分区支持。InnoDB是唯一提供MySQL 8.0支持的原生分区处理程序的存储引擎。在升级服务器之前,必须修改使用任何其他存储引擎的分区表:要么将其转换为InnoDB,要么删除其分区否则以后就不能使用它
  2. 从MySQL 8.0.11开始,禁止使用与初始化服务器时不同的lower_case_table_names设置启动服务器
  1. 重要更改:
  1. 默认字符集已从 更改 latin1为utf8mb4。这些系统变量会受到影响:
  2. character_set_server 和 系统变量 的默认值 character_set_database 已从 latin1更改为utf8mb4
  3. collation_server和 系统变量 的默认值 collation_database 从latin1_swedish_ci更改为 utf8mb4_0900_ai_ci
  1. 服务器更改
  1. 在 MySQL 8.0.11 中,删除了与帐户管理相关的几个已弃用的功能,例如使用 GRANT语句修改用户帐户的非特权特性、 NO_AUTO_CREATE_USER的SQL_Mode、 PASSWORD()函数和 old_passwords系统变量
  1. InnoDB 更改
  1. Auto-Increment
  1. 服务器重新启动不再取消 AUTO_INCREMENT = N 表选项的影响
  2. 服务器在操作后立即重新启动 ​ ​ROLLBACK​ ​ 不再导致重用分配给回​​滚事务的自动增量值
  1. A new dynamic variable
  1. innodb_deadlock_detect可用于禁用死锁检测,在高并发系统上,当大量线程等待同一个锁时,死锁检测会导致速度减慢。innodb_lock_wait_timeout 有时禁用死锁检测并依赖发生死锁时事务回滚 的设置可能更有效
  1. InnoDB现在在共享临时表空间中创建了临时表, ibtmp1.
  1. SQL 更改
  1. 不兼容的更改:
  1. 从MySQL 8.0.13开始,已弃用的GROUP BY子句ASC或DESC等限定符已被删除。以前依赖于GROUP BY排序的查询可能产生与以前MySQL版本不同的结果。要生成给定的排序顺序
  1. JSON特性增强,支持窗口函数,支持Hash join
  1. 原子数据定义语句(Atomic DDL)
  1. 原子 DDL 语句将与 DDL 操作关联的数据字典更新、存储引擎操作和二进制日志写入组合到单个原子事务中
  1. 会话重用
  1. MySQL 服务器现在默认支持 SSL 会话重用,并通过超时设置来控制服务器维护会话缓存的时间,该会话缓存建立允许客户端请求新连接的会话重用的时间段,所有 MySQL 客户端程序都支持会话重用

MySQL 8.0 中弃用的选项和变量

  1. query_cache_type: 查询缓存类型。在 MySQL 8.0.3 中删除
  2. query_cache_size:分配的内存用于存储旧查询的结果。在 MySQL 8.0.3 中删除
  3. query_cache_limit:不要缓存大于此的结果。在 MySQL 8.0.3 中删除
  4. date_format:日期格式 在 MySQL 8.0.3 中删除