MySQL 8.0 之后使用了新的版本控制和发布模型,分为两个主线:长期支持版(LTS)以及创新版。这两种版本都包含了缺陷修复和安全修复,都可以用于生产环境。
下图是 MySQL 的版本发布计划:
长期支持版
MySQL TLS 版本可以提供稳定的功能和更长的支持期限。
该版本只包含必要的问题修复,从而减少程序变更带来的风险。同时,只有 LTS 版本第一次发布时会新增或者删除功能,例如 8.4.0 LTS 会新增或者删除功能, 8.4.1 LTS 只会修复问题。
MySQL TLS 版本遵循 Oracle 终身支持政策,可以获得 5 年标准支持服务(Premier Support),外加 3 年扩展支持服务(Extended Support),以及无期限的持续支持服务(Sustaining Support)。
创新版
MySQL 创新版提供最新的功能和增强特性。创新版本非常适合快节奏开发环境中的开发人员和 DBA,通过高水平的自动化测试和现代持续集成技术加快升级周期。
创新版本除了提供新功能之外,还会重构 MySQL 代码以更加复合 SQL 标准,因此可能改变某些功能行为,删除弃用的功能等。这些行为变更可能带来巨大影响,尤其是和应用程序相关的行为变更,例如 SQL 语法、新的保留字、查询执行以及查询性能等。这些变更可能会导致应用程序变更,涉及大量迁移工作。
MySQL 创新版的支持只会持续到下一个创新版发布。
产品组合
MySQL Server、MySQL Shell、MySQL Router、MySQL Operator for Kubernetes 以及 MySQL NDB Cluster 都会提供 LTS 版本和创新版。
MySQL Connectors 使用统一的版本号,最新版本可以兼容所有支持的 MySQL Server 版本。例如,MySQL Connector/Python 9.0.0 兼容 MySQL Server 8.0、MySQL Server 8.4 以及 MySQL Server 9.0。
安装/升级/降级
两个版本主线会影响到 MySQL 的安装、升级以及降级,推荐选择其中一个版本主线并且升级相应的版本。
如果使用官方的 MySQL 安装源,可以在源配置中设置版本主线。例如,yum 源可以选择 mysql-innovation-community 安装和升级创新版,或者使用 mysql-8.4-lts-community 安装和升级 MySQL 8.4.x 长期支持版。
在同一个 LTS 版本序列中不会改变功能和数据结构,因此可以进行就地(in-place)升级和降级。例如,MySQL 8.4.0 升级到 MySQL 8.4.x。LTS 版本升级到下一个 LTS 版本序列也没问题,例如 MySQL 8.4.x 升级到 MySQL 9.7.x。但是,MySQL 不支持跨越 LTS 版本序列升级,例如 MySQL 8.4.x 不能跨越 MySQL 9.7.x 直接升级到 MySQL 10.7.x。
MySQL 创新版遵循类似的升级规则,例如 MySQL 9.0.0 可以升级到 MySQL 9.3.0。主要的区别在于不同主版本中的创新版本不能直接升级,例如 MySQL 8.3.0 不能直接升级到 MySQL 9.0.0。我们需要首先升级到最近的 LTS 版本序列,然后再升级到创新版本序列。例如 MySQL 8.3.0 先升级到 MySQL 8.4.0,然后再从 MySQL 8.4.0 升级到 MySQL 9.0.0。
为了简化升级过程,MySQL 官方安装源将 LTS 第一个版本同时作为 LTS 和创新版。所以,如果我们配置了创新版升级主线,就可以从 MySQL 8.3.0 升级到 MySQL 8.4.0,然后再升级到 MySQL 9.0.0。
MySQL 创新版的降级需要执行逻辑导出和导入。
下篇文章我们会介绍 MySQL 升级和降序的版本路径以及支持的方法。