2026-04-14 15:56:20
MySQL 8.0主要新特性
性能显著提升:MySQL 8.0的性能峰值几乎是5.7版本的两倍,这得益于底层架构的优化和多项性能改进。
instant add new column:支持快速在线新增列,无需长时间锁定表,提高了数据库操作的灵活性和效率。
并行写入redo log:通过并行写入redo log,MySQL 8.0在大量事务写入时能够显著提升性能,减少事务提交延迟。
在线调整日志设置:可以在线调整redo log buffer和undo log的相关设置,无需重启数据库,增强了系统的可维护性。
单个会话变量设置:支持针对单个会话设置SET_VAR变量,提高了配置的灵活性和针对性。
数据字典增强:新增更多数据字典,元数据全部采用InnoDB引擎存储,不再使用frm文件,提高了数据的可靠性和一致性。
自增列持久化:解决了服务重启后自增值回退的问题,确保了自增列的唯一性和连续性。
在线持久化配置:通过set persist命令可以在线持久化配置,生成mysqld.auto.cnf文件,简化了配置管理。
CREATE TABLE ... SELECT的原子性和crash safe支持:解决了MGR架构下无法使用的问题,提高了数据导入的可靠性和安全性。
新的密码插件:使用caching_sha2_password密码插件替代原本的mysql_native_password,支持更高的密码策略,增强了安全性。客户端需要升级驱动以兼容新插件。
角色功能:新增角色role功能,简化了权限管理,提高了数据库的安全性和可维护性。
倒排索引和不可见索引:新增倒排索引和不可见索引,提高了查询性能和灵活性。
SQL分析器重构:重构SQL分析器,增强优化器和CBO特性,提高了查询优化效果。
支持OLAP场景:支持通用表达式、窗口函数等高级特性,主要用于OLAP场景,提高了数据分析的能力。
默认字符集:默认字符集为utf8mb4,支持更多的字符和符号,提高了数据库的国际化能力。
shutdown命令:支持使用shutdown命令直接关闭服务,简化了数据库关闭操作。
错误日志增强:错误日志增加了不同错误的错误编号,方便查询和定位问题。
并行复制writeset机制:通过并行复制writeset机制,提升了从库复制性能,减少了复制延迟。
资源组:支持创建系统级别或者用户级别资源组,以限制SQL对服务器资源的占用,提高了资源利用率和系统的稳定性。
升级MySQL 8.0前的准备
阅读官方文档:先阅读官方What Is New In MySQL 8.0文档,了解新特性和被废弃的功能,避免配置文件中依然存在这些历史配置。
回滚方案:考虑回滚方案,确保在升级过程中出现问题时能够及时恢复。
平稳过渡:通过先升级从库的方式进行平稳过渡,减少对生产环境的影响。
兼容性检查:升级前需要关注是否存在关键词兼容问题以及GROUP BY语句兼容问题,可以使用官方的检查工具进行检查。
版本要求:5.7版本支持直接升级8.0(5.6不支持),升级大版本前建议先把小版本升级到最新。
升级方式:建议采用逻辑备份+导入的方式进行升级,确保数据的完整性和一致性。
升级MySQL 8.0步骤
关闭当前MySQL:确保数据库服务已经关闭,避免升级过程中的数据冲突。
备份数据:使用逻辑备份工具(如mysqldump)备份现有数据,确保数据安全。
替换二进制包:使用新版本二进制包替换原版本,确保所有文件都已经更新。
更改配置文件:根据新版本的要求,修改配置文件(如my.cnf),确保配置正确。
启动服务:启动MySQL服务,不需要执行mysql_upgrade命令。MySQL 8.0支持通过配置upgrade = AUTO参数来自动处理升级需要做的一切。
通过以上步骤,可以顺利完成MySQL 8.0的升级,享受新版本带来的性能提升和新特性。