在 2023 年 10 月 21 日,MySQL 5.7 將達(dá)到其生命周期的終點(diǎn)(EOL,End of Life)。這意味著 Oracle 將不再為 MySQL 5.7 提供官方更新、錯(cuò)誤修復(fù)或安全補(bǔ)丁。
自發(fā)布以來(lái),MySQL 5.7 成為了許多應(yīng)用開(kāi)發(fā)者的首選的數(shù)據(jù)庫(kù),但日新月異的數(shù)據(jù)應(yīng)用場(chǎng)景和技術(shù)也對(duì)數(shù)據(jù)庫(kù)技術(shù)棧提出了新的需求。隨著 MySQL 5.7 EOL 到來(lái),升級(jí)到一個(gè)更高版本、且有官方支持的 MySQL 似乎是最直接的方案,但是否有其他選擇呢?我們是否可以找到一個(gè)既能滿足當(dāng)下不斷發(fā)展的數(shù)據(jù)處理需求,又能克服當(dāng)前 MySQL 技術(shù)限制的完美替代方案?
本文將介紹一些可能的替代方案的優(yōu)缺點(diǎn),重點(diǎn)探討分布式數(shù)據(jù)庫(kù)(如 TiDB)的架構(gòu)優(yōu)勢(shì)。
(資料圖)
1、MySQL 的發(fā)展及面臨的挑戰(zhàn)
當(dāng)下,數(shù)據(jù)價(jià)值越來(lái)越受到企業(yè)的重視,“數(shù)據(jù)驅(qū)動(dòng)”也成為了一個(gè)重要的課題,事務(wù)性數(shù)據(jù)處理方式在過(guò)去十年中發(fā)生了巨大變化,實(shí)時(shí)、海量的事務(wù)處理日益成為主流,同時(shí)對(duì)從這些數(shù)據(jù)中獲得即時(shí)的分析和洞察的需求也依然存在。然而,MySQL 在應(yīng)對(duì)這些不斷演進(jìn)的需求時(shí)存在一些局限性:
● 擴(kuò)展性 :面向?qū)懭朊芗蛻?yīng)用程序,MySQL 的性能變得不穩(wěn)定。當(dāng)數(shù)據(jù)規(guī)模超過(guò)單個(gè)節(jié)點(diǎn)的容量時(shí),性能會(huì)受到影響。
● 高可用性 :雖然 MySQL 提供了復(fù)制和集群等功能以實(shí)現(xiàn)高可用性,但要有效地設(shè)置和管理這些功能需要仔細(xì)規(guī)劃、配置和持續(xù)監(jiān)控。此外,傳統(tǒng)的 MySQL 復(fù)制可能出現(xiàn)延遲,進(jìn)而導(dǎo)致數(shù)據(jù)不一致。
● 實(shí)時(shí)分析 :隨著企業(yè)對(duì)事務(wù)性數(shù)據(jù)的實(shí)時(shí)洞察的需求增加,在 MySQL 架構(gòu)中將聯(lián)機(jī)事務(wù)處理(OLTP)和在線分析處理(OLAP)系統(tǒng)分離的架構(gòu)會(huì)產(chǎn)生性能上的瓶頸。分析查詢可能會(huì)影響事務(wù)處理的性能。而使用單獨(dú)的分析數(shù)據(jù)庫(kù)處理這些查詢則增加了技術(shù)棧復(fù)雜性。
● 應(yīng)對(duì)現(xiàn)代架構(gòu) :現(xiàn)代架構(gòu)向云原生和微服務(wù)的轉(zhuǎn)變對(duì) MySQL 這樣的單機(jī)系統(tǒng)提出了挑戰(zhàn)。
當(dāng)企業(yè)的基礎(chǔ)設(shè)施無(wú)法滿足需求,數(shù)據(jù)規(guī)模從 1TB 增長(zhǎng)到 100TB+,同時(shí)仍期望保持相同的性能時(shí),這些限制帶來(lái)的不便就愈發(fā)明顯。
2、探索替代方案:MySQL 5.7 EOL 后,何去何從?
隨著 MySQL 5.7 EOL 即將到來(lái),現(xiàn)在是重新評(píng)估選擇并為未來(lái)的數(shù)據(jù)處理能力做好準(zhǔn)備的時(shí)候了。
Option 1
升級(jí)到官方支持的 MySQL 版本
這涉及從 MySQL 5.7 遷移到較新版本,如 MySQL 8.0,由 Oracle 提供維護(hù)和支持。
● 優(yōu)點(diǎn) :這個(gè)選項(xiàng)確保了對(duì)現(xiàn)有 MySQL 架構(gòu)的持續(xù)支持,能夠持續(xù)獲取新功能和性能改進(jìn)。通常,這是最簡(jiǎn)單的選擇,因?yàn)樗鼘?duì)現(xiàn)有基礎(chǔ)設(shè)施和應(yīng)用代碼的改動(dòng)較少。
● 缺點(diǎn) : 升級(jí)到較新版本的 MySQL 并不能解決 MySQL 架構(gòu)導(dǎo)致的擴(kuò)展性、高可用性和處理現(xiàn)代云原生架構(gòu)相關(guān)的固有挑戰(zhàn)。同時(shí),它還依賴于 Oracle 接下來(lái)的戰(zhàn)略方向,比如對(duì) MySQL 產(chǎn)品的支持力度。
Option 2
采用第三方 MySQL 商業(yè)版本
像 MariaDB 和 Percona Server 這樣的 MySQL 分支版本是由第三方公司獨(dú)立開(kāi)發(fā),為 MySQL 用戶提供了替代路徑。
● 優(yōu)點(diǎn) : 這些分支版本通常能夠比 MySQL 本身更快地引入功能和性能改進(jìn)。轉(zhuǎn)向分支版本可以依舊獲取持續(xù)的支持、與 MySQL 兼容的特性的熟悉性以及潛在的增強(qiáng)功能。
● 缺點(diǎn) : 與 MySQL 一樣,這些分支版本在處理高并發(fā)的寫入密集型工作負(fù)載,或在分布式架構(gòu)中部署時(shí)仍面臨挑戰(zhàn)。此外,支持的力度可能有所不同,一些企業(yè)可能不愿意對(duì)由社區(qū)驅(qū)動(dòng)的項(xiàng)目提供更多的支持。
Option 3
遷移到分布式數(shù)據(jù)庫(kù)
如果現(xiàn)有的應(yīng)用程序需要超出單個(gè) MySQL 實(shí)例所能提供的可擴(kuò)展性和高可用性,那么分布式數(shù)據(jù)庫(kù)(如 TiDB)可能是一個(gè)合適的選擇。
● 優(yōu)點(diǎn) : 分布式數(shù)據(jù)庫(kù)將傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)的優(yōu)點(diǎn)(ACID 特性、對(duì) SQL 的支持)與 NoSQL 系統(tǒng)的優(yōu)點(diǎn)(水平可擴(kuò)展性、高可用性)結(jié)合在一起。特別是 TiDB,完全兼容 MySQL 5.7,使得遷移變得更加容易。
● 缺點(diǎn) : 遷移到分布式數(shù)據(jù)庫(kù)的過(guò)程可能需要進(jìn)行全面評(píng)估,而不僅僅是簡(jiǎn)單地升級(jí) MySQL 或切換到分支版本。雖然 TiDB 兼容 MySQL,但可能不支持某些 MySQL 特定的功能,并且可能需要對(duì)現(xiàn)有的應(yīng)用程序代碼進(jìn)行一定范圍的調(diào)整。
3、TiDB ——兼容 MySQL 的分布式數(shù)據(jù)庫(kù)
想象一下,如果既能夠像操作 MySQL 一樣熟悉,同時(shí)又獲得分布式數(shù)據(jù)庫(kù)系統(tǒng)的可擴(kuò)展性和可用性,那該多好?這恰是 TiDB 所擅長(zhǎng)的。
TiDB ( https://www.pingcap.com/tidb/ ) 是由 PingCAP 開(kāi)發(fā)的領(lǐng)先的開(kāi)源分布式數(shù)據(jù)庫(kù)。它無(wú)縫地結(jié)合了關(guān)系型數(shù)據(jù)庫(kù)和 NoSQL 數(shù)據(jù)庫(kù)的優(yōu)勢(shì),將傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)的 ACID 特性、 SQL 兼容性與 NoSQL 系統(tǒng)的水平可擴(kuò)展性相結(jié)合。
圖 1:TiDB的架構(gòu)
以下是 TiDB 提供的主要功能的詳細(xì)介紹:
● 水平擴(kuò)展性 :TiDB 的分布式架構(gòu)允許數(shù)據(jù)自動(dòng)分片到多個(gè)節(jié)點(diǎn)上。隨著工作負(fù)載的增長(zhǎng),您可以輕松地向集群添加更多節(jié)點(diǎn)來(lái)處理不斷增加的需求,而不會(huì)出現(xiàn)顯著的性能下降。
● 高可用性 :TiDB 通過(guò)在多個(gè)節(jié)點(diǎn)上復(fù)制數(shù)據(jù)來(lái)保持?jǐn)?shù)據(jù)的冗余,并實(shí)現(xiàn)了自動(dòng)故障切換。即使集群中的一個(gè)或多個(gè)節(jié)點(diǎn)故障,也能確保您的數(shù)據(jù)保持可訪問(wèn)狀態(tài)。
● 強(qiáng)一致性 :在許多分布式數(shù)據(jù)庫(kù)中,一致性和可用性之間存在權(quán)衡。但是 TiDB 不是這樣。它使用一種稱為 Percolator 的分布式事務(wù)協(xié)議,保證了快照隔離一致性,確保集群中的所有節(jié)點(diǎn)對(duì)數(shù)據(jù)具有一致的視圖。
● MySQL 兼容性 :TiDB 支持 MySQL 協(xié)議,并且與 MySQL 語(yǔ)法具有廣泛的兼容性。這意味著許多現(xiàn)有的應(yīng)用程序、框架和針對(duì) MySQL 設(shè)計(jì)的工具可以與 TiDB 一起使用。
● 實(shí)時(shí)分析 :TiDB 利用 混合事務(wù)/分析處理(HTAP) 的能力,實(shí)現(xiàn)實(shí)時(shí)運(yùn)營(yíng)分析。TiKV、TiFlash 可按需部署在不同的節(jié)點(diǎn)上,解決 HTAP 資源隔離的問(wèn)題。TiDB 提供了一個(gè)統(tǒng)一的平臺(tái),用于即時(shí)高效地分析運(yùn)營(yíng)數(shù)據(jù)。
● 云原生架構(gòu) :TiDB 設(shè)計(jì)時(shí)考慮了云原生的原則,因此非常適合在云環(huán)境中部署。它支持 Docker 和 Kubernetes 等容器化技術(shù),并集成了阿里云、AWS、GCP 等云平臺(tái)。
總結(jié)
數(shù)據(jù)庫(kù)選型是一項(xiàng)關(guān)鍵決策,它對(duì)組織的增長(zhǎng)和成功有著重大影響。隨著 MySQL 5.7 EOL 到來(lái),現(xiàn)在是 MySQL 用戶進(jìn)行評(píng)估、計(jì)劃并為未來(lái)做好準(zhǔn)備的時(shí)候了。如果您面臨可擴(kuò)展性、高可用性、實(shí)時(shí)分析或適應(yīng)云原生架構(gòu)等挑戰(zhàn),從 MySQL 遷移到分布式數(shù)據(jù)庫(kù)(如 TiDB)可能是一個(gè)理想的選擇。
然而,同樣重要的是,要認(rèn)識(shí)到 MySQL 和 TiDB 在 MySQL 生態(tài)系統(tǒng)中可以共存并相互協(xié)作的可能性。許多客戶已經(jīng)意識(shí)到同時(shí)使用 MySQL 和 TiDB 的好處,特別是對(duì)于大規(guī)模應(yīng)用程序而言。通過(guò)在使用 MySQL 的同時(shí),企業(yè)利用 TiDB 可以實(shí)現(xiàn)更高的可擴(kuò)展性、高可用性和混合工作負(fù)載處理能力。這種協(xié)同作用可以實(shí)現(xiàn)無(wú)縫的數(shù)據(jù)管理,并滿足現(xiàn)代應(yīng)用程序不斷發(fā)展的需求。