0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于MySQL8.0版本選型的小技巧

jf_78858299 ? 來源:基礎技術研究 ? 作者:田亮 ? 2023-03-29 13:45 ? 次閱讀

前言:

MySQL 8.0 第一個GA(General Availability)版本(正式、可用于生產(chǎn)的版本)于2018/4/19發(fā)布至今已有3年。8.0是一個全新的版本,增加了數(shù)百項功能新特性,重構了SQL解析器,在性能和安全性上越來越向商業(yè)數(shù)據(jù)庫靠攏。5.7版本優(yōu)越的穩(wěn)定性和性能已經(jīng)廣泛應用,如今性能、安全性和眾多企業(yè)級特性提升讓我們思考是否該使用8.0版本。本文從以下幾個方面來了解一下。

01

官方補丁維護生命周期管理

圖片

如上圖所示,這是oracle官方對軟件產(chǎn)品的生命周期管理,MySQL被收購后也適用于該管理方式。

正如表格中所示,5.6今年就將結束支持,5.7版本在2023年結束其擴展支持,官方將不再發(fā)布補丁維護,而8.0的支持將持續(xù)到2026年。

建議使用8.0,逐漸累積新版本經(jīng)驗為后續(xù)升級做準備。

02

MySQL8.0 GA 以來bug修復統(tǒng)計

圖片

該表格是8.0版本發(fā)布可用于生產(chǎn)的正式版本以來所有bug的修復統(tǒng)計情況。

從表格中可以看出總bug修復數(shù)量逐漸收斂中。

我們最為關心的Innodb和復制相關的bug修復也是逐漸穩(wěn)定下來。

但梳理8.0每個小版本可以發(fā)現(xiàn),每個小版本都會推出許多新功能,這也可能造成小版本之間差異過大和帶來新的穩(wěn)定性問題。

例如,當時8.0.20發(fā)布時,修改了redo格式,導致常用的物理備份工具xtrabackup不支持,兩個月后xtrabackup支持該redo格式,但是這種基礎功能還是需要時間檢驗。

整個8.0主要是對group replication的不斷完善,同時還推出了Innodb Cluster和ReplicaSet 高可用方案,所以如果需要使用MGR請優(yōu)先選擇8.0。

如果需要用到新特性來解決工作中的痛點:比如hash join、窗口函數(shù)以及在線迅速加字段的特性,還有在高并發(fā)下性能的提升也是選擇8.0的重要原因。

03

各大金融企業(yè)如何選擇8.0版本

圖片

以上表格調研數(shù)據(jù)來源截止到2021/05/31

目前已經(jīng)有不少金融機構在8.0上做出嘗試,他們對于版本的選擇是十分謹慎的,一般正式發(fā)布一年半之后才開始使用。

大多數(shù)版本選擇都是從8.0.18開始,比如某五大行中兩家機構選擇8.0.18入坑,某些股份制銀行則是選擇8.0.18、8.0.20和8.0.21。

大多數(shù)的選擇策略均為當時的最新版本,版本集中在8.0.18~8.0.21。

選擇最新的版本會修復前面版本出現(xiàn)的重大bug。

比如,最近5月11日發(fā)布了新版本,距離上個版本不到一個月的時間,不太符合常規(guī)3個月一個小版本的規(guī)律,查看release notes緊急修復3個bug。

以前關于選擇軟件版本都有一個默認規(guī)矩,為了規(guī)避風險都會選擇次新版本的方案,這也是有一定道理的。

畢竟次新版本出來幾個月了,經(jīng)過驗證一般不會有重大問題。

但是這個經(jīng)驗在MySQL8.0 版本選擇上也不是特別是適合,比如當前最新的版本是8.0.25,而選擇次新的8.0.24剛好是有重大問題的。

有人會說使用最新版本新的功能可能會帶來新的穩(wěn)定性,但是我們常用的功能基本集中在Innodb、復制、分區(qū)表、優(yōu)化器上,只要這些基礎功能沒有重大變化,那么這些基礎功能早期發(fā)現(xiàn)的小問題在新的版本基本都會得到修復。

所以,不管是選擇次新還是最新版本都可能遇到問題,關鍵還是關注每個版本的release notes所記錄的修復問題,重大變化和新增功能,是否影響自己使用的功能。

其實我們也可以以公有云廠商采用基于社區(qū)版哪個版本來提供的RDS服務作為參考。

如阿里云RDS根據(jù)文檔中版本信息是基于社區(qū)版8.0.22,華為云文檔中顯示內核基于8.0.20,騰訊云基于8.0.18內核做的優(yōu)化。

根據(jù)市場占有率前三分析,我們選擇的版本至少要大于等于8.0.22。

以下版本在選擇的時候需要注意:

要注意8.0.19這個版本的安全漏洞問題,大家最好避免這個版本以免被安全軟件掃到。

詳情:

https://www.cnvd.org.cn/flaw/show/CNVD-2021-30889

8.0.23版本修復了FTWRL影響其他會話執(zhí)行show table status,可能影響類似mysqldumper等備份工具,所以需要用到此功能最好大于等于8.0.23。

詳情:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-23.html

基于以上例子,理論上我們應該選擇最新的版本,至少概率上更加穩(wěn)定,使用開源軟件還是需要多測試多踩坑找到自己的使用邊界。

04

總結

基于以上MySQL官方維護周期,8.0持續(xù)到2026年。

MySQL基礎功能關于Innodb引擎和復制的bug修復是逐漸收斂,版本穩(wěn)定性逐漸加強。

調研眾多金融機構公司,8.0被逐漸使用,更具企業(yè)級的功能和安全性得到青睞。

綜上所述,8.0使用沒有問題,如果使用社區(qū)版請使用最新的,多關注每個版本的release notes,多做測試。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SQL
    SQL
    +關注

    關注

    1

    文章

    750

    瀏覽量

    43900
  • MySQL
    +關注

    關注

    1

    文章

    789

    瀏覽量

    26283
  • BUG
    BUG
    +關注

    關注

    0

    文章

    155

    瀏覽量

    15628
收藏 人收藏

    評論

    相關推薦

    Proteus8.0能仿真Proteus7.8版本的工程文件嗎

    菜鳥路過,請問Proteus8.0能仿真Proteus7.8版本的工程文件嗎?求指導
    發(fā)表于 06-07 20:07

    MySQL8.0 新特性:Partial Update of LOB Column

    摘要: MySQL8.0對json進行了比較完善的支持, 我們知道json具有比較特殊的存儲格式,通常存在多個key value鍵值對,對于類似更新操作通常不會更新整個json列,而是某些鍵值
    發(fā)表于 06-11 20:23

    MySQL安裝使用說明Windows版本

    MySQL安裝使用說明Windows版本
    發(fā)表于 10-23 16:29 ?0次下載
    <b class='flag-5'>MySQL</b>安裝使用說明Windows<b class='flag-5'>版本</b>

    mysql8.0中的無鎖重做日志源碼介紹

    的性能, 所以在InnoDB 8.0 改成了無鎖實現(xiàn)這個是官方的介紹:https://mysqlserverteam.com/mysql-8-0-new-lock-free-scalable-wal-design
    的頭像 發(fā)表于 02-17 10:52 ?2799次閱讀
    <b class='flag-5'>mysql8.0</b>中的無鎖重做日志源碼介紹

    Synopsys推出帶有Coverity 8.0版本的軟件完整性平臺

    的自動化靜態(tài)分析解決方案的最新版本軟件源代碼中的安全漏洞和質量缺陷。 Coverity 8.0版本包括幾個重要更新,包括對新編程語言的支持,增強的安全測試功能以及對許多開發(fā)工具和環(huán)境的額外集成支持。
    的頭像 發(fā)表于 08-08 14:40 ?3857次閱讀

    關于mysql存儲引擎你知道多少

    Mysql中用的最多的兩種存儲引擎就是MyISAM和InnDB,其中MyISAM是5.1版本之前的默認存儲引擎,InnoDB是5.1版本之后的默認存儲引擎。
    發(fā)表于 08-23 10:52 ?806次閱讀

    騰訊云打造MySQL 8.0全新引擎,進一步加速客戶產(chǎn)業(yè)升級

    據(jù)介紹,騰訊云數(shù)據(jù)庫 MySQL 8.0的內核可以百分百完全兼容主流MySQL分支。相比官方版本,無論是單機模式、異步模式還是同步模式下, MySQ
    的頭像 發(fā)表于 07-09 14:54 ?2270次閱讀

    四個有趣的關于Python 3.9版本新特性

    四個有趣的關于Python 3.9版本新特性
    的頭像 發(fā)表于 10-08 14:47 ?2979次閱讀
    四個有趣的<b class='flag-5'>關于</b>Python 3.9<b class='flag-5'>版本</b>新特性

    MySQL 5.7與MySQL 8.0 性能對比

    背景 測試mysql5.7和mysql8.0分別在讀寫,選定,只寫模式下不同并發(fā)時的性能(tps,qps) 最早 測試使用版本mysql5.7.22和
    的頭像 發(fā)表于 11-03 09:26 ?1.6w次閱讀
    <b class='flag-5'>MySQL</b> 5.7與<b class='flag-5'>MySQL</b> <b class='flag-5'>8.0</b> 性能對比

    MySql環(huán)境一鍵安裝應用程序免費下載

    本文檔的主要內容詳細介紹的是MySql環(huán)境一鍵安裝應用程序免費下載。創(chuàng)建Mysql所需環(huán)境支持8.0以上版本,暫無測試過8.0以下
    發(fā)表于 02-26 15:01 ?7次下載

    請問mysql8.0不能在grant時創(chuàng)建用戶是什么原因?

    用習慣了MySQL5.7,當在MySQL8.0里創(chuàng)建用戶時,習慣性直接敲GRANT指令,結果報錯了
    的頭像 發(fā)表于 08-11 10:16 ?1912次閱讀

    mysql8.0默認字符集是什么

    MySQL 8.0 默認字符集是 utf8mb4。 MySQL 8.0 是當前最新的開源關系型數(shù)據(jù)庫管理系統(tǒng),由Oracle公司開發(fā)和維護。MySQ
    的頭像 發(fā)表于 11-16 14:48 ?1587次閱讀

    MySQL5.7數(shù)據(jù)導入8.0版本,這3款工具值得收藏!

    MySQL 5.7數(shù)據(jù)庫遷移到MySQL 8.0可以使用NineData、MySQL Shell、Percona XtraBackup和Liquibase等工具。每個工具都有自己的優(yōu)
    的頭像 發(fā)表于 11-29 16:47 ?2063次閱讀
    <b class='flag-5'>MySQL</b>5.7數(shù)據(jù)導入<b class='flag-5'>8.0</b><b class='flag-5'>版本</b>,這3款工具值得收藏!

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

    GitHub 團隊近日分享了他們將 GitHub.com 的底層數(shù)據(jù)庫無縫升級到 MySQL 8.0 的經(jīng)驗。 據(jù)介紹,GitHub 使用 MySQL 來存儲大量關系數(shù)據(jù),因此在不影響網(wǎng)站服務級別
    的頭像 發(fā)表于 12-13 10:21 ?394次閱讀
    GitHub底層數(shù)據(jù)庫無縫升級到<b class='flag-5'>MySQL</b> <b class='flag-5'>8.0</b>的經(jīng)驗

    mysql8.0流程控制介紹

    ,流程就分為三大類:? ?順序結構:程序從上往下依次執(zhí)行 ? ?分支結構:程序按條件進行選擇執(zhí)行,從兩條或多條路徑中選擇一條執(zhí)行 ? ?循環(huán)結構:程序滿足一定條件下,重復執(zhí)行一組語句針對于MySQL的流程控制語句主要有3類。注意:只能用于
    的頭像 發(fā)表于 01-13 10:36 ?512次閱讀