MySQL 國產化替代觀察
原創近期在中國信通院主辦的 2023 OSCAR 開源產業大會上,發布的一份《開源數據庫生態發展研究報告》吸引到我。這份報告是中國信通院旗下的云計算開源產業聯盟寫的,比較權威。報告針對最為流行的開源數據庫-MySQL 發展現狀、技術創新、產業應用三方面梳理了發展情況,并對我國基于MySQL技術路線的開源數據庫產業進行展望。報告根據 MySQL 開源數據庫5.7版本生命周期即將結束,結合在金融、電信、能源行業的情況,闡述了用戶在數據庫替代和遷移選型過程中所考慮的諸多因素及可能的技術選型方案。針對這一報告,也談下我的一些觀點。下文圖未做特殊說明的,均取自上面的研究報告。完整報告參考[閱讀原文]。
1. 大背景:MySQL 5.7 即將 EOL
1).MySQL 5.7 EOL
EOL,即生命周期結束(End of Life)。根據Oracle官方信息,到了2023年10月,MySQL 5.7將迎來其生命周期的終結,也就是俗稱的“停服”。這意味著該版本將不再獲得更新或安全補丁,同時也意味著各個行業使用MySQL 5.7數據庫的業務系統將面臨多種潛在風險…
圖片
數據庫停服,意味著一系列的問題,包括在安全漏洞修復、穩定性、安全性、軟硬件環境適配、運行維護支持、生態系統萎縮及使用開源 MySQL 本身可能帶來的合規性風險等。
2).MySQL 使用現狀
報告中也談到了MySQL在國內,特別是5.7版本的使用情況。作為最為流行的開源數據庫,MySQL在國內有大量的裝機量,從全球占比來看,中美占據半壁以上。而作為最為流行的版本,MySQL5.7在眾多版本中也是占比最高的。報告中以金融行業為例,說明了MySQL 5.7的使用情況。
2. 國產化替代選型考慮因素
1).選擇開源 MySQL理由
從上面的數據可見,MySQL 在國內有著巨大的使用量,不僅僅在互聯網行業,其他行業也同樣有著廣泛的使用。那為什么大家如此喜愛這一產品?這也是后面我們在考慮國產化替代上需要關注的因素。報告中同樣給出了一組調查數據。
圖片
從數據中不難發現,開源和生態是用戶選擇這一產品最為主要的兩個因素。一方面軟件開源大大降低了使用門檻,可以讓用戶快速了解使用產品;同時也可吸引到大量開發者來為之貢獻,實現軟件迭代閉環,促進快速發展。這也是國內很多數據庫廠商紛紛采用開源策略的初衷。另一方面,完善的生態體系促進了產品發展,上下游生態產品將有助于用戶快速開發、使用這一產品,降低使用難度。這也是國內大部分產品的短板——還沒有形成較為完善的生態體系,因而大多采用的兼容方式,已借用相對成熟的生態體系。由此可見,國內很多產品都提供了 MySQL 的兼容模式,正是基于此。
2).使用 MySQL 的主要問題
當然,使用開源 MySQL 也并非是完美方案,同樣面臨很多問題。這也是希望未來在 MySQL 的替代過程中能夠解決的問題。報告中也收集到用戶吐槽的一些問題。
圖片
這些問題中主要是來自兩個方面,一是開源軟件所帶來的問題,主要是運行維護、協議合規等問題,這些都是開源軟件在企業內使用的常見問題,對于非國內開源的軟件,問題更為凸顯;二是 MySQL 軟件自身在功能、性能、穩定性等方面的問題,這也是企業選擇開源的一個風險,無法像使用商業軟件一樣,可以跟廠商有較為緊密的互動、獲得穩定的技術支持。
3).替換 MySQL 5.7 的考慮因素
鑒于上面談到的 MySQL 5.7 即將停止服務,那么如何替換就成為很多企業需考慮的問題。在選擇具體技術方案之前,首先看看用戶在面對替換時優先考慮哪些問題。報告以金融行業為例,收集了用戶在替換時需考慮的幾個因素。下文我將這些因素逐一展開說明。
圖片
3. 替代主要技術路線及產品
1).替代技術路線選擇
通過上文可知,替換數據庫需要考慮諸多因素,那當前用戶是如何選擇的呢?報告以金融行業為例,收集來自用戶的的反饋。從下圖所示的用戶選擇來看,替換為國產數據庫是主流的選擇,選擇升級到8.0次之,仍然冒險使用 5.7 版本很少。
圖片
既然替換(含升級)是用戶的主流選擇,那么當前可支持 MySQL 替換的技術路線有哪些呢?報告中明確指出有三種可行的技術路線:
- 遷移到 MySQL 支持版本,如 MySQL 8.0
- 遷移到國內的 MySQL 開源分支
- 遷移到國產商業數據庫
2).主流技術方案對比
這里結合上文談到的用戶在面對替換場景優先考慮的這些因素,針對這三種可行的技術路線,做了個簡單的雷達圖分析。圖中的維度對比是來自上文的考量因素。圖中由內到外,對應遷移難度從難到易、成本由高到低、其他因素均從內到外為高到低遞減,也就是說越靠外側,越是優選之策。那么從下圖可以看出,國內開源方案相對比較均衡,且全面優于升級到8.0版本的方案,后者在長期發展上有優勢。而與國產商業數據庫對比來看,后者的優缺點更加鮮明,部分對比項上有明顯的優勢,但同樣也存在明顯的劣勢,主要表現在成本及兼容性上。因此用戶如何選擇,需綜合考慮自身的情況。下文將重點對比下各個維度。
圖片
? 遷移難度
遷移難度,是大部分用戶在國產化替代中最為優先的考量因素,從現有幾種替換方案來說差異很明顯。原生 MySQL 的遷移相對難度不大,官網也提供了從5.7到8.0的升級方案及配套工具。但這里需要強調一點,8.0版本與5.7還是存在不小的差異,還沒有做到完全向下兼容,因此還是需要做部分工作,包括從開發、架構及運維方面。國內開源方案,相對更為平滑,其是基于原生5.7版本構建而成,與官方版本的差異很小,更多是在功能及國產化適配上的增強,因此遷移難度在三個方案中是最小的,用戶通常可以復用現有5.7的全套技術棧,相對難度和風險都是最小的。國產商用方案相對而言,是遷移難度最大的。不同商用方案的技術架構不同,有些是采用MySQL做了二次化封裝而成,有些則完全自研并實現了一定MySQL兼容;那么無論是采用哪種技術路線,都涉及遷移中必要的評估工作。這一過程通常會包括功能、非功能及性能評估,包含諸多的評測內容。如評估結果與原生MySQL 5.7的差異較大,則都需要進行后續的遷移改造。此外,在后續的結構、數據遷移方面也無法利用原生工具完成,需要廠商或第三方來提供相關遷移工具和方案。
? 改造成本
從上面的遷移難度看,各方案都多少存在一定的改造成本,但差異也是比較明顯的。原生方案中由8.0替換5.7,可能會存在一定的修改量,這需要在充分理解版本間差異的情況下進行修改。相對而言,國內開源方案在改造成本上則更有優勢,鑒于其主要是針對部分功能及對國產化適配的增強,可以理解為對5.7是“100%”的兼容,在改造成本方面幾乎為零。國產商用部分則是三者中改造成本最高的,在前期充分的評估后,需要摸清與5.7的功能差異,有針對性的進行改造適配。有些問題,甚至需要在架構層面進行調整才能解決。這里需考慮的成本不僅僅包括財力投入,也包括人力及時間成本等。
? 可用性
金融行業對可用性的要求是極其嚴苛的,能夠投入到生產環境使用的產品都是經過充分的考慮與驗證。如需要新引入產品,哪怕僅僅是產品版本的重大升級,同樣是需要進行評估與驗證的。針對上面幾種方案,升級到8.0,是需要有個版本重大升級后的驗證過程,充分驗證其可用性。對于國內開源方案,因其是基于5.7構建而成,因此其可用性基本可視同5.7的能力,對于用戶來說,無需做太多驗證類工作。對于國產商業方案來說,各家產品均優先在可用性上做了處理,但同樣需要做一定的驗證工作。
? 安全性
數據庫作為數據的主要載體,其對安全尤其是數據安全上有著嚴格要求。在具體安全能力上,主要包括有數據的保密性、完整性、可用性、訪問控制、身份驗證、備份恢復、審計監控、安全合規、防范攻擊及必要的物理安全。原生的MySQL 8.0主要延續了5.7在安全方面的能力,可滿足企業基本的安全訴求。國內開源,在安全性上有著更多的增強,包括針對數據加密方面國密算法的支持等。國產商用方面,則在安全上有著更多的增強,通過自身或與第三方工具的配合,可實現更高的安全性。
? 產品性能
產品性能,一直是 MySQL 被部分用戶吐槽的方面。原生的MySQL在高頻、小批量的數據訪問方面有一定優勢,在稍微復雜的方面則有先天的短板。在MySQL 8.0上,這種情況有了一定的改善,通過支持諸如 Hash Join 等特性,做了一定的增強。當然,我們也要客觀的看到,其較其他產品還是存在差距的。國內開源方面,針對性能方面有著更多的增強,有些沒有合入官方版本的性能補丁被合入,其性能較原生MySQL有了進一步的增強。而國產商業方面,通過針對優化器、執行器乃至算法的支持,其性能有更為優異的表現,特別是隨著分布式、列存、向量化執行引擎等關鍵能力的突破,其性能較原生或國內開源版本,有了質的飛躍。
? 兼容性
好的數據庫產品,還需要構建完善的上下游生態,這直接關乎到用戶的使用體驗。作為后來者,通常會選擇兼容主流產品作為一條“捷徑”。企業也通常會將兼容性作為選擇的產品的考量因素之一。上述幾種方案中,8.0在兼容性方面會采取向下兼容模式,會存在少量細微的差異;國內開源因是在5.7版本上構建,兼容性幾乎等價于開源版本;在國產商業產品上,兼容性還存在不小的距離,需要不斷完善增強。
? 運維管理及易用性
數據庫產品作為一種復雜的基礎軟件,提高易用性、降低運維管理難度是關乎于使用者體感的重要因素。在具體措施上,一方面通過內核的不斷優化,提升易用性;一方面則通過自研或與第三方工具集成,降低使用管理的難度。從上述三個方案來看,社區開源產品無論是5.7還是升級到8.0都會面臨一定的管理問題,原生的開源產品大多沒有提供必要的配套工具等;同時基于內核層面的易用性問題,也很難在開源代碼中快速合入實現。相對而言,國內開源會好一些,部分易用性問題可以在內核層實現。國產商用的則更有一些優勢,很多商業產品都提供了很多周邊工具來減少運維強度。
3).主流開源替代產品
那么針對上面談到的方案二,即遷移到國內開源產品上,報告中也整理了部分國內開源產品,包括 GreatSQL、PolarDB-X、StoneDB、TenDBCluster-TenDB、AliSQL 等一批基于 MySQL 開源分支構建的產品,這些產品已初步構建多方參與的社區生態,在應用落地、社區活躍度、代碼貢獻等層面圍繞自身特點進行不斷完善。報告中還對比了這些產品:
圖片
在這些開源產品中,以 GreatSQL、PolarDB-X 等為代表的一些產品均取得不俗的成績。它們通過構建國內自有開源生態社區,穩步推進生態發展。通過活躍的開源社區,不斷更新迭代產品發展,快速響應解決社區問題,完善產品在不同業務場景下的需求,逐步形成更為符合中國特點的生態體系。以 GreatSQL 為例,通過增加如并行查詢、線程池、MGR增強、SQL兼容增強、國密算法等特性及能力,提升在高性能、高可用、易用性、安全性上的表現,為國內用戶提供了MySQL5.7停服替換的一種更好的選擇。除了上述產品外,國內還有很多其他基于 MySQL 的開源或基于開源分支之上的商業產品,都可以作為用戶替代的選擇。相信這些產品未來也將擔當起 MySQL 替換的重任。下圖是來自墨天輪社區統計的 MySQL 體系的國內產品。