2023年7月18日,MySQL發布了最新數據庫服務器版本8.1.0,其中變化最大的是MySQL采用了新的版本發布模型。本文是官方博客的中文摘抄和個人理解,原文更精彩: https://blogs.oracle.com/mysql/post/introducing-mysql-innovation-and-longterm-support-lts-versions
先說一下MySQL 5.7和以前版本的發布模型,以5.7.33為例:
- 第一個數字(5)稱為major version number, 主版本號;
- 第二個數字(7)稱為minor version number, 次版本號;
- 主版本和次版本組成一個發布版本,或者稱為一個系列(series), 如: 5.5, 5.6, 5.7,…
- 這些版本代表不同的穩定特性集/功能的集合(stable feature set);
- 例如,5.6版本相較于5.5版本引入了大量的特性,5.7版本相較5.6版本引入了大量的新特性,…
- 第三個數字(33)稱為patch version number, 補丁版本號;
- This is incremented for each new bugfix release.
- In most cases, the most recent version within a series is the best choice.
- 補丁號代表對應版本的缺陷修復集合;
- 例如, 補丁發布版本5.7.33相較與5.7.32版本沒有新特新的引入,但是包含了5.7版本的大量新的缺陷修復。
這種模型有一個缺點: 新特性只在大版本發布,而大版本發布周期通常很長(通常2年),雖然保持了版本穩定,但新特性發布比較慢。
因此MySQL 8.0采用了持續發布模型(continuous delivery model), 補丁版本(patch releases)
除了包含缺陷修復,還可能包含已經穩定的新特性。新模型可以讓MySQL更快的引入型特性,但是頻繁的變化對與用戶來說是個挑戰,對于一個穩定的生產系統,我們通常需要的是缺陷修復,而不是引入變化。
因此MySQL引入一個新的版本模型,提供創新版本(Innovation)和長支持版本(Long-Term Support/LTS)給用戶選擇。
- 8.1.0 版本是新模型發布的第一個創新版本;
- 8.0.34+開始,Patch release(如:8.0.35)將僅包含bug修復,不包含新特性,直到2026年4月,8.0版本End-Of-Life (EOL)。
- 如果我們需要最新的特性或者改進,我們可以選擇創新版本,一個創新版本的支持(補丁發布)將在下一版本發布后結束。
- 這意味著,當8.2版本發布后,8.1將不會繼續發布補丁版本,要修復只能升級到8.2創新版本;
- 8.4是規劃中的一個長支持版本(LTS),LTS包含5年的支持(includes 5 years of premier and 3 years of extended support)
- 這意味著你可以長期穩定的運行在8.4版本,持續獲得缺陷修復,又不引入新的功能(特性)變化。
- 長支持版本通常2年發布一次(About every 2 years, a minor version will be designated as Long Term Supported release.)
- 一個主(major)版本只會有一個長支持版本,例如如果8.4版本是8.x的長支持版本,后續不會再有8.5創新版本,8.4后,主版本會跳到9,并發布9.0版本的第一個創新版本;
- 因為長支持版本沒有引入變化(functionality remains the same and data format does not change),版本的升級或者降級支持更好:
- In-place upgrades and downgrades will be possible.
- InnoDB CLONE will be supported within an LTS release, both for upgrading and downgrading.
- 升級和降級支持矩陣詳見原文。