MySQL 8.0的新特性与升级

MySQL 8.0的新特性与升级
最新回答
旧我

2026-04-14 15:56:20

MySQL 8.0的新特性与升级

MySQL 8.0主要新特性

  1. 性能显著提升:MySQL 8.0的性能峰值几乎是5.7版本的两倍,这得益于底层架构的优化和多项性能改进。

  2. instant add new column:支持快速在线新增列,无需长时间锁定表,提高了数据库操作的灵活性和效率。

  3. 并行写入redo log:通过并行写入redo log,MySQL 8.0在大量事务写入时能够显著提升性能,减少事务提交延迟。

  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分析器重构:重构SQL分析器,增强优化器和CBO特性,提高了查询优化效果。

  14. 支持OLAP场景:支持通用表达式、窗口函数等高级特性,主要用于OLAP场景,提高了数据分析的能力。

  15. 默认字符集:默认字符集为utf8mb4,支持更多的字符和符号,提高了数据库的国际化能力。

  16. shutdown命令:支持使用shutdown命令直接关闭服务,简化了数据库关闭操作。

  17. 错误日志增强:错误日志增加了不同错误的错误编号,方便查询和定位问题。

  18. 并行复制writeset机制:通过并行复制writeset机制,提升了从库复制性能,减少了复制延迟。

  19. 资源组:支持创建系统级别或者用户级别资源组,以限制SQL对服务器资源的占用,提高了资源利用率和系统的稳定性。

升级MySQL 8.0前的准备

  1. 阅读官方文档:先阅读官方What Is New In MySQL 8.0文档,了解新特性和被废弃的功能,避免配置文件中依然存在这些历史配置。

  2. 回滚方案:考虑回滚方案,确保在升级过程中出现问题时能够及时恢复。

  3. 平稳过渡:通过先升级从库的方式进行平稳过渡,减少对生产环境的影响。

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

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

  6. 升级方式:建议采用逻辑备份+导入的方式进行升级,确保数据的完整性和一致性。

升级MySQL 8.0步骤

  1. 关闭当前MySQL:确保数据库服务已经关闭,避免升级过程中的数据冲突。

  2. 备份数据:使用逻辑备份工具(如mysqldump)备份现有数据,确保数据安全。

  3. 替换二进制包:使用新版本二进制包替换原版本,确保所有文件都已经更新。

  4. 更改配置文件:根据新版本的要求,修改配置文件(如my.cnf),确保配置正确。

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

通过以上步骤,可以顺利完成MySQL 8.0的升级,享受新版本带来的性能提升和新特性。