資料技術嘉年華 • ONLINE 萬里資料庫帶你get MySQL整個高可用發展史

萬里資料庫發表於2021-11-26

11月26日下午2點,資料技術嘉年華 • ON LINE第四期如期而至。萬里資料庫開源生態負責人葉金榮老師受邀發表《MySQ高可用演進及實踐》主題演講,與人大金倉、南大通用、中興、雲和恩墨等業內知名的國產資料庫技術專家同臺論道,暢談資料庫領域的技術成果與應用實踐。


圖 | 資料技術嘉年華 • ON LINE第四期


數次躍升迭代

MySQL高可用發展史悉數呈現


葉老師表示,資料庫的高可用主要面臨兩方面挑戰:一是如何提升RPO資料一致性,即在做高可用切換的時候,如何儘可能地保證不丟資料或少丟資料;二是如何保障服務連續性,提高RTO指標。換句話說,在發生主從切換過程中,如何降低服務不可用的時間。

縱觀整個MySQL發展史,高可用的發展大致可分為4個階段:


一、遠古階段:原始主從複製架構

基本是MySQL5.5之前的版本,當時主要是基於非同步複製的解決方案。在網際網路發展早期階段,絕大多數是高可用+讀寫分離方案,常見的架構方案一般是一主一從或一主多從。

這個階段不僅存在非同步複製的問題,主從複製一定會存在延遲。並且,資料的一致性無法保障,沒有高可用的切換機制,需要通過自行寫指令碼等方式實現。此外,從節點的單執行緒,⼤事務、⽆主鍵等問題也容易造成複製延遲,可讀性較差。


二、古代階段:MHA元件/工具

這個階段,出現了MHA這樣的工具,可以利用MHA配合非同步複製,實現對整個主從複製架構的高可用管理。當出現意外時,會把某個從節點提升成新的主節點,然後MHA會在切換前嘗試資料補錄,之後再完成主從切換,儘可能地實現RPO=0,降低RTO,基本上可以保障99.99%的可用性,資料丟失最少。

這個階段存在的問題是對5.7版本後的並⾏複製⽀持不好,基本上是廢棄狀態,需要自行開發切換指令碼,並且需要構建ssh信任,存在一定的安全隱患。此外,專案已經處於不更新的狀態,目前不太建議再用MHA解決方案了。


三、近代階段:半同步複製工具


MySQL5.6版本以後,引入了GTID、binlog server、半同步複製等特性,尤其引入了新選項slave-rows-search-algorithms,對⽆主鍵的表⽀持更友好。並且還引⼊了增強半同步,通過半同步執行緒獨⽴減少瓶頸點,主庫group commit和從庫writeset提⾼效率,設定最少多少個從庫ack提⾼可靠性這些措施機制,配合ProxySQL、Orchestrator等⼯具,基本上可以保障99.9%的可⽤性。

這個階段存在的問題是半同步複製存在幻讀問題,並且ack確認在dump thread中,很容易造成瓶頸。半同步複製也可能會退化成一個非同步複製,特殊情況下會造成主從資料不一致。


四、現代階段:MGR

MGR是MySQL官⽅推出的新⼀代原⽣⾼可⽤⽅案,可以很好地保障資料一致性,並且出現故障會自動轉移,無需人工干預。MySQL InnoDB Cluster,簡稱MIC,包括MySQL Server、Shell、Router等元件,MySQL Shell包含豐富的介面、指令集,MySQL Router則⾃帶讀寫分離及MGR狀態感知,基本上可以保障99.99%的可用性。


作為研究MySQL十多年的技術專家,葉老師針對上述的高可用方案給出瞭如下建議:

  • 針對一般業務,即不要求高一致性和高可靠性,以只讀為主的業務場景,選擇非同步複製、半同步複製和MGR三種方案都可以,但是建議使用MySQL5.7以上的版本;

  • 針對重要業務,即對資料一致性、高可用保障都有較高要求的業務場景,可選擇半同步複製或MGR高可用方案,建議使用MySQL8.0以上的版本;

  • 針對核心業務,即對資料一致性、高可用保障要求極高的業務場景,強烈建議使用MGR,且建議至少用8.0以上版本,然後採用多IDC和資料多副本的架構方案,配合MySQL Shell、Router原⽣⽅案。


圖 | 高可用架構方案選擇建議


並且,MGR還有同城跨IDC架構、跨城多IDC架構,可以根據不同的需求進行選擇。

最後,不得不提的是萬⾥資料庫目前正在維護的MySQL分⽀——GreatSQL,尤其適用於金融級應用。它專注於提升MGR的可靠性和效能,並且⽀持InnoDB並⾏查詢特性,讓CPU資源不再浪費。其擁有的地理標籤功能,可以提升多機房架構的資料可靠性;全新的流控機制,讓MGR運⾏時更流暢且不頻繁抖動。

簡單來說,相對官方社群版本,GreatSQL的運⾏更穩定、可靠。感興趣的小夥伴,可以點選下載試用。


資料技術嘉年華作為資料庫領域的技術盛會,匯聚國產資料庫廠商百花齊放。資料庫作為資訊系統底層的基礎軟體,技術含量高,工程難度大,在國內歷經幾十年和數代人的努力發展至今,先輩們為之付出了艱苦卓絕的努力,貢獻了卓越的智慧和一定階段的技術成果。

我們作為資料庫技術的繼承者,理應在先輩們成果和智慧的基礎上,繼續努力向前,為把資料庫發展為更先進、更易用、更安全、更穩定、更智慧、更融合的產品不懈努力奮進。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69997641/viewspace-2844376/,如需轉載,請註明出處,否則將追究法律責任。

相關文章