MySQL 8.0的新特性与升级
一、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参数来自动处理升级需要做的一切
转载自:https://segmentfault.com/a/1190000041808952