前言:
MySQL 8.0 第一個(gè)GA(General Availability)版本(正式、可用于生產(chǎn)的版本)于2018/4/19發(fā)布至今已有3年。8.0是一個(gè)全新的版本,增加了數(shù)百項(xiàng)功能新特性,重構(gòu)了SQL解析器,在性能和安全性上越來越向商業(yè)數(shù)據(jù)庫靠攏。5.7版本優(yōu)越的穩(wěn)定性和性能已經(jīng)廣泛應(yīng)用,如今性能、安全性和眾多企業(yè)級(jí)特性提升讓我們思考是否該使用8.0版本。本文從以下幾個(gè)方面來了解一下。
01
官方補(bǔ)丁維護(hù)生命周期管理
如上圖所示,這是oracle官方對軟件產(chǎn)品的生命周期管理,MySQL被收購后也適用于該管理方式。
正如表格中所示,5.6今年就將結(jié)束支持,5.7版本在2023年結(jié)束其擴(kuò)展支持,官方將不再發(fā)布補(bǔ)丁維護(hù),而8.0的支持將持續(xù)到2026年。
建議使用8.0,逐漸累積新版本經(jīng)驗(yàn)為后續(xù)升級(jí)做準(zhǔn)備。
02
MySQL8.0 GA 以來bug修復(fù)統(tǒng)計(jì)
該表格是8.0版本發(fā)布可用于生產(chǎn)的正式版本以來所有bug的修復(fù)統(tǒng)計(jì)情況。
從表格中可以看出總bug修復(fù)數(shù)量逐漸收斂中。
我們最為關(guān)心的Innodb和復(fù)制相關(guān)的bug修復(fù)也是逐漸穩(wěn)定下來。
但梳理8.0每個(gè)小版本可以發(fā)現(xiàn),每個(gè)小版本都會(huì)推出許多新功能,這也可能造成小版本之間差異過大和帶來新的穩(wěn)定性問題。
例如,當(dāng)時(shí)8.0.20發(fā)布時(shí),修改了redo格式,導(dǎo)致常用的物理備份工具xtrabackup不支持,兩個(gè)月后xtrabackup支持該redo格式,但是這種基礎(chǔ)功能還是需要時(shí)間檢驗(yàn)。
整個(gè)8.0主要是對group replication的不斷完善,同時(shí)還推出了Innodb Cluster和ReplicaSet 高可用方案,所以如果需要使用MGR請優(yōu)先選擇8.0。
如果需要用到新特性來解決工作中的痛點(diǎn):比如hash join、窗口函數(shù)以及在線迅速加字段的特性,還有在高并發(fā)下性能的提升也是選擇8.0的重要原因。
03
各大金融企業(yè)如何選擇8.0版本
以上表格調(diào)研數(shù)據(jù)來源截止到2021/05/31
目前已經(jīng)有不少金融機(jī)構(gòu)在8.0上做出嘗試,他們對于版本的選擇是十分謹(jǐn)慎的,一般正式發(fā)布一年半之后才開始使用。
大多數(shù)版本選擇都是從8.0.18開始,比如某五大行中兩家機(jī)構(gòu)選擇8.0.18入坑,某些股份制銀行則是選擇8.0.18、8.0.20和8.0.21。
大多數(shù)的選擇策略均為當(dāng)時(shí)的最新版本,版本集中在8.0.18~8.0.21。
選擇最新的版本會(huì)修復(fù)前面版本出現(xiàn)的重大bug。
比如,最近5月11日發(fā)布了新版本,距離上個(gè)版本不到一個(gè)月的時(shí)間,不太符合常規(guī)3個(gè)月一個(gè)小版本的規(guī)律,查看release notes緊急修復(fù)3個(gè)bug。
以前關(guān)于選擇軟件版本都有一個(gè)默認(rèn)規(guī)矩,為了規(guī)避風(fēng)險(xiǎn)都會(huì)選擇次新版本的方案,這也是有一定道理的。
畢竟次新版本出來幾個(gè)月了,經(jīng)過驗(yàn)證一般不會(huì)有重大問題。
但是這個(gè)經(jīng)驗(yàn)在MySQL8.0 版本選擇上也不是特別是適合,比如當(dāng)前最新的版本是8.0.25,而選擇次新的8.0.24剛好是有重大問題的。
有人會(huì)說使用最新版本新的功能可能會(huì)帶來新的穩(wěn)定性,但是我們常用的功能基本集中在Innodb、復(fù)制、分區(qū)表、優(yōu)化器上,只要這些基礎(chǔ)功能沒有重大變化,那么這些基礎(chǔ)功能早期發(fā)現(xiàn)的小問題在新的版本基本都會(huì)得到修復(fù)。
所以,不管是選擇次新還是最新版本都可能遇到問題,關(guān)鍵還是關(guān)注每個(gè)版本的release notes所記錄的修復(fù)問題,重大變化和新增功能,是否影響自己使用的功能。
其實(shí)我們也可以以公有云廠商采用基于社區(qū)版哪個(gè)版本來提供的RDS服務(wù)作為參考。
如阿里云RDS根據(jù)文檔中版本信息是基于社區(qū)版8.0.22,華為云文檔中顯示內(nèi)核基于8.0.20,騰訊云基于8.0.18內(nèi)核做的優(yōu)化。
根據(jù)市場占有率前三分析,我們選擇的版本至少要大于等于8.0.22。
以下版本在選擇的時(shí)候需要注意:
要注意8.0.19這個(gè)版本的安全漏洞問題,大家最好避免這個(gè)版本以免被安全軟件掃到。
詳情:
https://www.cnvd.org.cn/flaw/show/CNVD-2021-30889
8.0.23版本修復(fù)了FTWRL影響其他會(huì)話執(zhí)行show table status,可能影響類似mysqldumper等備份工具,所以需要用到此功能最好大于等于8.0.23。
詳情:
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html
基于以上例子,理論上我們應(yīng)該選擇最新的版本,至少概率上更加穩(wěn)定,使用開源軟件還是需要多測試多踩坑找到自己的使用邊界。
04
總結(jié)
基于以上MySQL官方維護(hù)周期,8.0持續(xù)到2026年。
MySQL基礎(chǔ)功能關(guān)于Innodb引擎和復(fù)制的bug修復(fù)是逐漸收斂,版本穩(wěn)定性逐漸加強(qiáng)。
調(diào)研眾多金融機(jī)構(gòu)公司,8.0被逐漸使用,更具企業(yè)級(jí)的功能和安全性得到青睞。
綜上所述,8.0使用沒有問題,如果使用社區(qū)版請使用最新的,多關(guān)注每個(gè)版本的release notes,多做測試。
-
SQL
+關(guān)注
關(guān)注
1文章
783瀏覽量
45148 -
MySQL
+關(guān)注
關(guān)注
1文章
860瀏覽量
27937 -
BUG
+關(guān)注
關(guān)注
0文章
156瀏覽量
16024
發(fā)布評(píng)論請先 登錄
MySQL8.0 新特性:Partial Update of LOB Column
mysql8.0中的無鎖重做日志源碼介紹

Synopsys推出帶有Coverity 8.0版本的軟件完整性平臺(tái)
關(guān)于mysql存儲(chǔ)引擎你知道多少
騰訊云打造MySQL 8.0全新引擎,進(jìn)一步加速客戶產(chǎn)業(yè)升級(jí)
MySQL 5.7與MySQL 8.0 性能對比

MySql環(huán)境一鍵安裝應(yīng)用程序免費(fèi)下載
請問mysql8.0不能在grant時(shí)創(chuàng)建用戶是什么原因?
mysql8.0默認(rèn)字符集是什么
MySQL5.7數(shù)據(jù)導(dǎo)入8.0版本,這3款工具值得收藏!

GitHub底層數(shù)據(jù)庫無縫升級(jí)到MySQL 8.0的經(jīng)驗(yàn)

評(píng)論