LWN:MySQL以及MariaDB在Fedora 40中的变化!

Linux News搬运工

共 5122字,需浏览 11分钟

 · 2024-04-12

关注了就能看到更多这么棒的文章哦~

MySQL and MariaDB changes coming in Fedora 40

By Joe Brockmeier
March 6, 2024
ChatGLM translation
https://lwn.net/Articles/960630/

Fedora 项目在 Fedora 19 版本中切换到 MariaDB,用它来做 MySQL 的默认实现,这是 2013 年 的事情。MariaDB 曾经作为 MySQL 的直接替代品,之后已经发生了很大的变化,不再是这样了——尽管对 Oracle 有所顾虑,并乐观地认为 MariaDB 会取代 MySQL,但现实是 MySQL 和 MariaDB 似乎都将持续存在。考虑到这一点,Fedora 开发者 Michal Schorm 提议从 Fedora 40 开始,该项目应该修订 MySQL 和 MariaDB 在 Fedora 中的打包方式。

MariaDB 如何成为 Fedora 的 "mysql"

可能需要简要回顾一下 MySQL 的历史(和所有权的变更)以及 MariaDB 的由来。MySQL 由 MySQL AB 创建,首次发布于 1995 年 5 月。它是无处不在的开源LAMP(Linux、Apache、MySQL 以及 Perl、PHP 或 Python)软件栈的关键部分,该软件栈曾经(并且仍然)支撑着大量网络活动。早期,像 MySQL 和 PostgreSQL 这样的开源数据库是被轻视的,认为不适合处理实际工作负载。但随着持续的改进和快速采纳,这个领域里的主要供应商都开始关注并担忧开源数据库对他们的业务产生的影响。

MySQL 如此受欢迎,以至于 Sun Microsystems 决定在 2008 年收购 MySQL AB,当时支付了$10 亿美元的“总对价”。Sun 对开源的监管以及与 Linux 社区的关系,有时不太稳定,但 Sun 对 MySQL 的所有权在社区中普遍被持“观望”态度。然而,Sun 对 MySQL 的监管从未真正得到考验——在 MySQL AB 收购完成后仅 14 个月,Sun 就被挂牌出售。在 IBM 的投标被撤回后,Oracle 宣布其意图在 2009 年 4 月收购 Sun。

虽然 Sun 整体上被给予了信任,但 Oracle 受到了开源社区更冷淡的接待,并受到更多的监管审查。美国几乎没有异议地批准了这笔交易,但欧盟(EU)决定进行更长时间的调查,以更仔细地审视数据库巨头收购 MySQL 的动作。在批准期间,MySQL 的创造者 Michael "Monty" Widenius,在离开 Sun 一段时间后,大力(但未能成功)地游说以阻止 MySQL 落入 Oracle 手中;还有其他人也加入了他的努力。尽管 Widenius 争辩说对 MySQL 进行 fork 的方案也不足以抵消 Oracle 拥有 MySQL 可能造成的潜在伤害,但他已经创建了 MariaDB 这个“分支”,并成立了一家公司继续其开发,出于他对 Sun 管理 MySQL 的不满。

尽管有反对意见,这笔收购还是在 2010 年 1 月获得了批准。Oracle 继续对 Google 提起诉讼,指控其 Android Java 实现(Oracle 输掉了这场诉讼),并剥离 OpenOffice.org 给 Apache 软件基金会(ASF)。它还主持了 Hudson 社区的分裂,这导致了 Jenkins 项目 的创建,并且整体上来说未能赢得开源社区广大成员的支持。

到了 2012 年底,维基媒体基金会(WMF)开始计划切换到 MariaDB。不是因为性能原因,而是因为 WMF 认为 MariaDB 是“确保 mysql 派生数据库技术真正开放且得到良好支持的最好途径”。到了 2013 年,由于 MySQL 的安全报告、错误跟踪以及缺乏完整的回归测试套件的情况变化,许多 Linux 发行版已经切换或正在计划切换到 MariaDB 作为 MySQL 的替代品。

一些发行版完全停止打包 MySQL,并完全切换到 MariaDB。其他发行版,如 openSUSE 和 Fedora,决定采用使 MariaDB 成为默认选项的方法,同时以新包名称提供 MySQL 的社区版。在 Fedora 中,MySQL 现在是 community-mysql ,而 mysql 将安装 MariaDB。当时,Fedora 的 Honza Horak 提出了两个继续打包提供 MySQL 的理由——需要 MySQL 进行“认证或类似原因”的 Fedora 用户,以及 MariaDB 未来万一停止作为其直接替代品。看来,他说的那个未来已经到来了。

MariaDB 和 MySQL 的现状

尽管有人担心 Oracle 可能会停止 MySQL 的开发,或者关闭其源代码,但该公司仍然在 GPLv2 下提供 MySQL 的社区版。某些功能被保留给其企业版,包括透明数据加密和高可用性特性,仅举这两个例子,但开源版本仍然受欢迎。MariaDB 没有取代 MySQL,但它已经获得了自己的追随者,并且已经实质性分叉了,不再是“即插即用”的替代品。

在他的变更提案中,Schorm 指出,MariaDB 包声称提供 mysql 已经不再有意义,自从MariaDB 10.5在 2020 年发布以来就没有意义。在分裂早期,人们可以字面上“即插即用”MariaDB(或 MySQL)并期望它与现有数据库一起工作。然而,自从 MySQL 8.0 之后,这就不再可能了。在两者之间迁移仍然可能,但需要更多的步骤了,用户在处理某些数据类型(如 JSON)时可能会遇到问题。

多年来,这两个项目在如何实现静态数据的加密、全局事务 ID(GTIDs)、复制等方面发生了分歧。MariaDB 还实现了一些特性,例如对Oracle PL/SQL的支持,这些特性在 MySQL 中不太可能出现。根据 MariaDB 关于支持 MariaDB 的应用程序的文档:“我们知道的每一个与 MySQL 合作的项目也与 MariaDB 合作。”然而,在应用程序被部署后,迁移这两个数据库之间的难度越来越大。MariaDB 维护了一个详细的列表,列出了特定版本的 MySQL 和 MariaDB 以及它们已知的兼容性问题。
MariaDB 继续拥有忠实(尽管规模较小)的追随者。数据库引擎的流行度指数目前将 MySQL 排名为最受欢迎的数据库(仅次于 Oracle 数据库),MariaDB 排名第 13,在关系数据库管理系统中排名第九。

Fedora 40 中的变化

Schorm 为 Fedora 40 提出了多项变更,一些已经完成,一些被推迟到以后的版本。其中一个最大的变化,是将 MySQL 社区版识别为 mysql ,这个已经完成。在 Fedora 40 之前,想要 MySQL 这个品牌软件的用户需要安装 community-mysql 包。Schorm 在变更提案中指出,包名称 community-mysql 在 Fedora 中是独一无二的,将名称恢复为 mysql 不仅对用户有好处,对他也有好处:

这个变更将为我,维护者,节省大量时间和精力,当从 Fedora 挑选提交和补丁到 CentOS Stream 和 RHEL 时。
我在下游节省的精力越多,我就能为 Fedora 和上游投入更多贡献。

Schorm 还取消了“cross-installation 功能”,该功能允许用户安装一个数据库的服务器端和另一个数据库的客户端。例如,用户可以安装 MariaDB 服务器和 MySQL 客户端,或者反之。Schorm 表示,他引入这个功能是希望“为用户提供一个方便的增强功能”,但结果证明它有太多的缺点。这在 Fedora 40 中也被取消,应该不会影响其他包,如 ODBC、Python 或 Java 的 MySQL 连接器。

MySQL 和 MariaDB 通常同时提供了多个主要版本供人们大量使用。例如,MySQL 已经转向同时提供长期支持(LTS)和“创新”发布的方式,而 MariaDB 有几个重叠的支持期为五年的版本。在 Fedora 39 之前,这些可以作为Fedora 模块打包,以同时提供多个主要版本。Fedora 在 Fedora 39 中取消了模块化,留下了更少的选项来同时打包多个版本。

从 Fedora 40 开始,具有多个版本的 MySQL 和 MariaDB 包将有一个不带版本化的 metapackage 名称(例如, mariadb ),指向一个特定版本,如 mariadb10.11 。这允许 Schorm(或其他打包者)将 LTS 发布打包为 mysql ,并同时提供创新版本。如果在某个 Fedora 版本中打包了其他的软件版本,它们将有一个带有版本化的包名称(例如 mariadb10.5 ),可以安装上来代替使用。随着模块化的结束,用户将只能选择一个版本的包进行安装。将无法同时安装 MySQL 或 MariaDB 的两个版本。

Schorm 原本计划在 Fedora 40 中为 MariaDB 10.5 和 10.11 打包,但在变更提案的更新中他表示,在这个周期中他只能打包 MariaDB 10.11。因此,Fedora 40 的默认(也是唯一)的 MariaDB 版本将是 10.11。他还曾提议在 Fedora 40 中包含 MySQL 8.1 软件包,但也没有及时完成。Fedora 40 中可用的 MySQL 默认版本将是 MySQL 8.0.36,这也是 Fedora 40 中唯一可用的 MySQL 版本。

i686 构建暂时幸免

尽管 Fedora 在 2019 年 Fedora 31 中停止了对 i686 安装的支持,但项目仍然为各种用例构建 i686 包——主要是 Wine 和 Steam 的用户。他提议在 Fedora 40 中取消对 i686 的 MySQL 服务器和 MariaDB 服务器的构建,但那将等到 Fedora 41 或以后,同时他调查是否会有任何想要的 i686 包意外地依赖于 MariaDB 或 MySQL。他在变更提案中更新说,他仍然计划进行这项工作,但发现“在 Fedora 40 周期内完成这项工作有些过于复杂了”。Schorm 表示,他无法“获取给定架构的包预期被删除的所有依赖关系的正确递归列表”。

前进到 Fedora 40

使用 MariaDB 或 MySQL 包从 Fedora 39 升级到 Fedora 40 的用户不应该遇到任何与已安装的 MariaDB 或 MySQL 包相关的问题。用户现在需要明确要求安装 MariaDB,如果他们真的想要它,或者应用程序拉取 mysql 作为依赖项时,实际上将得到 MySQL。变更提案几乎没有引起评论,这表明 MariaDB 几乎没有支持者认为使用 MariaDB 而不是 MySQL 有什么明显的优缺点。然而,它足够好,并且(对于一些用户来说)有一个优势,即它不是来自 Oracle。人们很希望能看到命名变更如何影响未来的数据库选择——用户是否强烈偏好其中一个数据库,或者在寻找 "mysql" 时只是简单地接受默认值。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~



浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报