MySQL 和 MariaDB 版本管理的歷史背景及差異

在本文中,我們將探討 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/plugins/howtouse
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章