小版本升级是补丁优化,兼容性高,支持in-place升级;大版本升级属结构性演进,需logical升级,兼容性风险显著,如8.0默认caching_sha2_password认证。
MySQL小版本升级和大版本升级的核心区别在于变更范围、兼容性影响、操作方式和风险等级。小版本升级(如 8.0.33 → 8.0.35)本质是修复补丁和小幅优化,基本保持结构与行为一致;大版本升级(如 5.7 → 8.0)则涉及数据字典重构、默认行为变更、废弃功能移除和安全策略收紧,属于结构性演进。
小版本升级通常采用 in-place 升级:停掉旧服务,替换二进制文件,再运行 mysql_upgrade 更新系统库(mysql、information_schema、performance_schema、sys)。整个过程不改动数据文件,速度快,适合同操作系统、同架构环境。
大版本升级推荐 logical upgrade:用 mysqldump 或 mydumper 导出全量逻辑数据,初始化新版本实例,再导入。这种方式可跨操作系统、跨CPU架构,规避二进制不兼容问题,但耗时长、需额外磁盘空间,且要注意字符集、SQL mode、权限模型等隐式差异。
小版本升级一般不会破坏现有 SQL 行为,但需留意:
大版本升级的兼容性挑战更突出:
caching_sha2_password 认证插件,老客户端(如旧版 PHP MySQL 扩展、Java Connector/J
sql_mode 默认值变更(如移除 NO_AUTO_CREATE_USER),导致建用户语句失败mysql.user 字段调整)、information_schema 视图逻辑变化,影响依赖元数据的运维脚本小版本升级失败后,一般可快速切回旧二进制+原数据目录,停机时间常控制在分钟级;而大版本升级一旦执行 mysql_upgrade 或导入完成,就不可逆——8.0 的数据字典格式无法被 5.7 识别,必须依赖升级前的完整逻辑备份才能回退。
这意味着:
mysqldump --all-databases --single-transaction 备份,并验证可恢复无论大小版本,都应遵循统一原则:
mysqlcheck -u root -p --all-databases --check-upgrade 辅助发现潜在问题