MySQL 9 是 Oracle 在 2024 年开始推出的 Innovation 版本(创新线)。
它与 MySQL 8.4 LTS(长期支持版) 并行:
Innovation(如 MySQL 9.x):快速引入新功能,适合开发者、探索新特性的场景。LTS(如 MySQL 8.4):侧重稳定和长期支持,适合企业生产环境。
从 MySQL 8 升级到 MySQL 9,和以前跨大版本升级(比如 5.7 → 8.0)相比,跨度小一些,但依然有一些重要的影响与步骤需要特别注意。
我给你分成两部分:可能的影响 和 升级步骤。
一、升级可能带来的具体影响
1. 认证与安全
移除 mysql_native_password 和 SHA-1 插件:如果你在 MySQL 8 里还有账号用这两种认证插件,升级后会导致无法登录。✅ 解决方法:提前把用户切换到 caching_sha2_password 或其他受支持的插件。
ALTER USER 'username'@'host' IDENTIFIED WITH caching_sha2_password BY 'password';
2. 存储引擎
MySQL 9 进一步清理了过时的存储引擎(如 MEMORY、MERGE、FEDERATED、ARCHIVE、BLACKHOLE 等)。如果你有依赖这些表,需要提前迁移到 InnoDB 或其他替代方案。
3. SQL 行为变化
某些 错误容忍 在 9 被移除,例如:IGNORE + 子查询返回多行时,以前 8.x 会忽略并取一条,现在 9 会报错。SQL 优化器有一些调整(查询计划可能不同,性能或结果集顺序可能有差别),建议重点测试复杂查询。
4. 应用兼容性
依赖 deprecated 语法 / 变量 的程序在 9 里可能报错。Performance Schema 新增表(比如 variables_metadata、global_variable_attributes),监控工具可能会需要适配。
5. 插件和外部工具
部分三方插件或备份工具可能需要新版才兼容 MySQL 9。例如,Percona、MHA、ProxySQL 等要检查版本支持情况。
二、升级步骤(推荐流程)
确认版本路线MySQL 9 属于 Innovation 版本,适合尝鲜和用新特性。如果你更注重稳定,可以考虑 MySQL 8.4 LTS。完整备份用 mysqldump 或 mysqlpump 做逻辑备份,或者用 xtrabackup 这种物理备份工具。必须测试恢复过程,保证能回滚。mysqldump --all-databases --single-transaction --routines --events --triggers > backup.sql检查兼容性使用 mysqlcheck 或 mysql_upgrade(在 9 里已内置到 mysqld,启动时会自动做一部分检查)。手动检查是否有被弃用的认证方式、存储引擎、SQL 语法。测试环境升级在非生产环境中先跑 MySQL 9,导入生产数据,跑完整业务回归测试。特别要测:登录认证、核心 SQL 查询、存储过程、定时事件(Event)、监控采集。停机升级(生产环境)停止 MySQL 服务,安装 MySQL 9 软件包(deb/rpm/tar)。启动 MySQL 9 服务。启动时会自动执行数据字典和系统表的升级。升级后验证检查 error.log 是否有升级警告。执行:SELECT &version; SHOW WARNINGS;确认关键账号能正常登录,应用正常运行。回滚预案如果出现问题,回滚到 MySQL 8:卸载 MySQL 9 → 安装 MySQL 8 → 用备份恢复。
总结
主要风险点:认证方式、存储引擎清理、SQL 行为变化。关键步骤:备份 → 测试环境模拟 → 生产停机升级 → 升级后验证。