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