MySQL 8.0的新特性与升级

111 阅读2分钟

一、MySQL 8.0主要新特性

1、性能峰值几乎是5.7的两倍

2、可快速在线新增列——instant add new column

3、可并行写入redo log,提升大量事务写入时的性能

4、可在线调整redo log buffer和undo log相关设置

5、可针对单个会话SET_VAR设置变量,提升灵活性

6、新增更多数据字典,元数据全部采用InnoDB引擎存储,无frm文件

7、自增列持久化,解决了服务重启后自增值回退的问题

8、可在线持久化配置(set persist会生成mysqld.auto.cnf)

9、增加CREATE TABLE ... SELECT的原子性和crash safe支持,解决了MGR架构下无法使用的问题

10、使用新的密码插件caching_sha2_password(替代原本的mysql_native_password)(客户端需要升级驱动),支持更高的密码策略,即便相同的密码加密后的密文也是不同的

11、新增角色role功能

12、新增倒排索引、不可见索引

13、重构SQL分析器,增强优化器和CBO特性

14、支持通用表达式、窗口函数,主要用于OLAP场景

15、默认字符集为utf8mb4

16、支持使用shutdown命令直接关闭服务

17、错误日志增加了不同错误的错误编号,方便查询

18、并行复制writeset机制,提升从库复制性能

19、支持创建系统级别或者用户级别资源组以限制SQL对服务器资源的占用

二、升级8.0前的准备

1、先阅读官方What Is New In MySQL 8.0文档,关注被废弃的功能,避免配置文件中依然存在这些历史配置

2、需要考虑回滚方案

3、通过先升级从库的方式进行平稳过渡

4、升级前需要关注是否存在关键词兼容问题以及GROUP BY语句兼容问题,可以使用官方的检查工具

Bash

mysqlsh root:123456@192.168.1.101:3306 -e "util.checkForServerUpgrade();"

5、5.7版本支持直接升级8.0(5.6不支持),升级大版本前建议先把小版本升级到最新

6、建议升级方式采用逻辑备份+导入的方式

三、升级MySQL 8.0步骤

1、关闭当前MySQL

2、备份数据

3、使用新版本二进制包替换原版本

4、更改配置文件

5、启动服务,不需要mysql_upgrade,MySQL 8.0支持通过配置upgrade = AUTO参数来自动处理升级需要做的一切