在本文中,咱们将探讨 MySQL 和 MariaDB 服务生命周期和版本治理形式两个方面目前的情况及相干历史背景。
作者:Peter Zaitsev
本文起源:Percona 官网博客
- 爱可生开源社区出品。
须要阐明的是 MySQL 和 MariaD B 都有社区版和企业版。对于 MySQL,这两个版本都是由同一家公司(Oracle)提供,遵循雷同的版本编号体系,企业版蕴含更丰盛的性能。对于 MariaDB,社区版由 MariaDB 基金会提供,而企业版由 MariaDB PLC 提供,采纳独有的生命周期 与性能配置。为简略起见, 咱们将重点关注社区版。
MariaDB
你可能理解到,MariaDB 起初是 MySQL 的一个分支。晚期。两者倒退模式类似。但从 2014 年 MariaDB 10 版开始,状况大为不同。这一次,MariaDB 不再与 MySQL 版本匹配,从而摈弃了之前与 MySQL 5.1 和 MySQL 5.5 版本统一的模式。
取得独立的版本体系容许 MariaDB 以更快的节奏独立翻新,而不会因为与 MySQL 版本号雷同而产生用户误导。例如,MariaDB 已经有 5.2 和 5.3 两个版本,但 MySQL 没有对应的版本号。
MariaDB 倒退迅速。紧接着 2015 年公布了 MariaDB 10.1 版本,2017 年公布了 MariaDB 10.2 版本。尔后,主版本每个 1-2 年公布一次,2021 年公布了 MariaDB 10.6 版。不过,每一个版本都提供 5 年的长期反对期限,这给工程团队带来了额外负担。
为了解决这个问题,MariaDB 从 2021 年底开始施行“翻新版模型”。与 Ubuntu Linux 公布模式相似,每个季度公布一个短期反对版本(反对 1 年),同时还会选择性公布 LTS 版本(至多 5 年)。短期反对版本和长期反对版本遵循雷同的版本编号形式。
最近,MariaDB 也将主版本从 10 改为 11。产品经理 Kaj Arno 解释说,这次要是打算对优化器及其老本模型进行简单批改所致。目前新 11 系列还没有 LTS 版本,最新的 LTS 版本是 MariaDB 10.11,反对周期至 2028 年 2 月。
MySQL
起初,在 Oracle 的领导下,MySQL 持续遵循原有的版本生发周期。每隔几年,就会有大的性能版本,还会有“仅修复谬误”的小版本。MySQL 5.5、MySQL 5.6 和 MySQL 5.7 就是这种状况。
这种公布周期的益处是稳固!主要版本升级的危险相当低,如果须要回滚,能够通过疾速替换二进制文件来实现,而不须要对数据执行任何操作。然而,与所有事件一样,都须要衡量。这种办法的毛病是新性能的推出迟缓以及次要版本之间的巨大变化,使得降级可能变得凌乱且耗时。
在 MySQL 8 中产生了微小的变动。MySQL 8 看起来像是一个“长期迭代版”。尽管最后的 GA 版本于 2018 年 4 月公布,但咱们曾经五年没有看到新的次要版本了!这并不意味着 MySQL 8 没有翻新; 相同,当初的 MySQL 8 与 2018 年公布的版本有很大不同,因为在每个小版本中,都会引入新性能并修复谬误。
如果您喜爱更快地取得新性能,那肯定会喜爱这种新的公布办法。从实践上讲,这也意味着这些“性能版本”降级的危险较小,与过来次要版本须要数年的工作相比,这些降级只须要几个月的开发工作。然而,理论状况并非如此,因为某些版本蕴含新性能,其中的谬误足以导致版本召回。更蹩脚的是,MySQL 8 一旦降级到新的版本,无奈保障以前的版本可能操作雷同的数据。
MySQL 团队也意识到 MySQL 8 公布形式的问题;因而,接下来将引入新的公布模型。该模型引入了 Innovation 版本 ,大概每季度公布一次,并且仅反对最新的翻新版本(即,任何谬误修复都将与新性能一起推出,并作为下一个翻新版本推出,相似于 MySQL 8.0 当初的运行形式)。另一种版本是 LTS 版本 ,该版本每隔几年公布一次,并由 Oracle 反对 8 年(5 年规范 + 3 年扩大)。
MySQL LTS 版本的运行形式与 MySQL 8 之前的 MySQL 运行形式相似。 翻新版本有点相似于 MySQL 团队在某些时候应用的“里程碑版本”,但里程碑版本不被视为“生产就绪”,而是用于开发和预览版、翻新版被视为“生产级品质”。
MySQL 8.0 在此版本模型中占有非凡的位置。目前,它基本上是一个翻新格调版本,但随着 MySQL 8.0.34 的公布,它将成为仅修复谬误的 LTS 版本。
差别
乏味的是,两个社区仿佛都意识到咱们 既须要高速翻新又须要稳固 ,但也不能在同一个发行系列中真正同时领有这两种形式。还须要管制反对和保护老本;因而,不能领有太多积极支持的版本。
MariaDB 和 MySQL 都得出结论,他们须要同时重视翻新速度的 LTS 版本和版本。
MySQL 和 MariaDB 的 LTS 公布节奏也可能类似。MySQL 的 LTS 版本大概每两年公布一次,这与 MariaDB 相似,“至多每隔一年”公布一次。不同之处在于,MariaDB 还与次要 Linux 发行版单干,使 MariaDB LTS 版本与 Linux 发行版 LTS 发行打算保持一致,而 MySQL 没有申明任何此类指标。
存在差别的中央在于非 LTS 版本的解决形式。
当在无限工夫内公布“仅修复谬误”的版本时,MariaDB 会抉择“短期反对”路线,而 MySQL 抉择反对滚动翻新版本的门路,其中谬误修复仅蕴含在最新的翻新版本中。看看这些抉择如何发挥作用将会很乏味:
- MariaDB 的办法更加“用户敌对”,因为它使用户能够更好地管制何时降级到下一个性能版本。
- MySQL 的办法缩小了反对版本所需的工作。
另一个重要的区别是反对什么类型的降级。
- MySQL 仅反对降级到下一个次要版本(即,您不能间接从 MySQL 5.6 降级到 MySQL 8)。
- MariaDB 反对在降级中跳过次要版本。
更多技术文章,请拜访:https://opensource.actionsky.com/
对于 SQLE
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,反对多场景审核,反对标准化上线流程,原生反对 MySQL 审核且数据库类型可扩大的 SQL 审核工具。
SQLE 获取
类型 | 地址 |
---|---|
版本库 | https://github.com/actiontech/sqle |
文档 | https://actiontech.github.io/sqle-docs/ |
公布信息 | https://github.com/actiontech/sqle/releases |
数据审核插件开发文档 | https://actiontech.github.io/sqle-docs/docs/dev-manual/plugin… |