面向金融級應用的GreatSQL正式開源

本文首發於 GreatSQL社區 微信公衆號。


經過幾個月的緊張籌備,GreatSQL宣佈正式開源。

GreatSQL是源於Percona Server的分支版本,除了Percona Server已有的穩定可靠、高效、管理更方便等優勢外,特別是進一步提升了MGR(MySQL Group Replication)的性能及可靠性,以及衆多bug修復。此外,GreatSQL還合併了由華爲鯤鵬計算團隊貢獻的兩個Patch,分別針對OLTP和OLAP兩種業務場景,尤其是InnoDB並行查詢特性,TPC-H測試中平均提升聚合分析型SQL性能15倍,最高提升40多倍,特別適用於週期性數據彙總報表之類的SAP、財務統計等業務。

GreatSQL可以作爲MySQL或Percona Server的可選替代方案,用於線上生產環境。

GreatSQL完全免費併兼容MySQL或Percona Server。

GreatSQL由萬里數據庫發起、主導、維護,也歡迎廣大MySQL使用者、愛好者下載使用,或者提交代碼、issue等。

1. 使用MySQL社區版存在什麼風險

萬里數據庫核心研發團隊深入研究MGR架構,並在不斷的BUG修復實踐中總結出了一套完善、流暢的BUG修復流程,將MGR的缺陷分爲BUG和性能兩類,整理出共16大類共數幾十個BUG及性能缺陷問題。

搜索MySQL官方bug站,可以看到MGR分類下未修復的bug數量還是比較多的:

當服務器配置高,網絡環境好,業務量小的時候,這些MGR相關的bug可能不容易碰到。如果是網絡環境稍微複雜一些,例如同城多數據中心環境,甚至跨交換機,都可能會遇到網絡分區條件下的一些bug。或者當業務量較大,負載較高時,可能會產生丟數據、OOM,或事務頻繁回滾、死鎖等問題。

由於MGR自身的複雜性,以及復現BUG場景也更困難,所以MySQL社區版針對MGR的BUG修復工作通常比較緩慢,堆積較多。這也就造成了不少用戶不太敢放心使用MySQL社區版的MGR,擔心遇到各種不可控的BUG,甚至較嚴重的線程、事務hang住等問題,感覺還是不那麼可靠。

而GreatSQL已經有效解決了絕大多數較嚴重的問題,可以更放心地在金融級應用場景使用MGR架構。

2. GreatSQL的優勢及展望

在金融級應用場景中,對數據的可靠性和架構的容錯性要求都更高,對多數據中心甚至多活都有較高需求。爲此,GreatSQL未來會在以下幾方面着重發力。

2.1 增加更多金融級場景需求特性

  • 增加 地理標籤功能。當在多機房部署MGR時,可以保證每個機房中至少有一個節點都參與事務認證,確保該節點總有最新事務,這可用於解決多機房數據同步的問題。
  • 採用 全新的流控機制,流控閾值計算更合理、細緻,不會出現頻繁性能抖動問題。

    更多企業級新特性正在持續完善中,後續的版本會陸續放出。

2.2 提升同城雙機房和跨城架構部署的可靠性

  • 支持AFTER模式下多數派寫機制。發生網絡分區時,只要多數派節點已經回放完畢,集羣就可以繼續處理新的事務,依然可以保障集羣的高可用性。
  • 解決磁盤空間爆滿時導致MGR集羣阻塞的問題。當發現某節點磁盤空間滿了,就會讓這個節點主動退出集羣,避免像MySQL社區版那樣整個集羣被阻塞的問題。
  • 解決多主模式下或切主時可能導致丟數據的問題。調整了事務認證處理流程,改成放到  applier queue 裏按照paxos順序處理,這就解決了在多主模式下或切主時可能導致丟數據的問題。
  • 解決節點異常退出集羣時導致性能抖動的問題。優化paxos通信機制,發生異常時只會產生約1~3秒的性能小抖動,最差時TPS可能只損失約20% ~ 30%。而MySQL社區版本可能會造成約20~30秒的性能抖動,最差時TPS可能有好幾秒都降爲0。下面兩個圖非常明顯體現了GreatSQL針對這種情況所做的優化。


    MySQL社區版:5秒發現問題,22秒後將其踢出。


    GreatSQL版本:耗時約3秒即完全恢復,時效提升約90%

  • 節點異常狀態判斷更完善,比MySQL社區版本能更快發現、判斷節點異常狀態,有效減少切主和異常節點的等待耗時。下面兩個圖體現了GreatSQL針對節點狀態異常做出更快速準確的判斷。

    MySQL社區版:5秒發現問題,22秒後將其踢出。


    GreatSQL版本:2秒發現問題,9秒後將其踢出,時效提升約60%

2.3 MGR性能提升

  • 優化事務認證隊列清理算法。MySQL社區版本中,認證數據庫採用類似全表掃描的方式,效率極低。優化後,採用基於類似索引機制,有效解決清理效率低、性能抖動大的問題。
  • 提高MGR吞吐量。經過優化,有效提升MGR的吞吐量,並減少網絡延遲對訪問性能的影響。
  • 提升一致性讀性能,並降低從庫只讀延遲。

2.4 InnoDB事務鎖以及並行查詢優化

合併了由華爲鯤鵬計算團隊貢獻的兩個Patch,分別針對OLTP和OLAP兩種業務場景。

  • 優化InnoDB事務鎖機制,將原來的紅黑樹改爲無鎖哈希結構,在高併發場景中有效提升事務併發性能至少10%以上。




  • 實現對InnoDB底層B+樹多個子樹的並行掃描機制,極大提升聚合查詢效率,TPC-H測試中,最高可提升30倍,平均提升15倍。

    特別適用於週期性數據彙總報表之類的SAP、財務統計等業務。


其他更多企業級特性展望

未來我們還計劃將一部分企業級特性也開放出來,包括且不僅限於國產化硬件適配、等保合規、安全加密、Oracle兼容等衆多特性。

3. GreatSQL VS MySQL社區版

特性 GreatSQL MySQL社區版
地理標籤
全新流控算法
InnoDB並行查詢優化
InnoDB事務鎖優化
網絡分區異常應對 ⭐️⭐️⭐️⭐️⭐️ ⭐️
大事務處理 ⭐️⭐️⭐️⭐️⭐️ ⭐️
節點異常退出處理 ⭐️⭐️⭐️⭐️⭐️ ⭐️
一致性讀性能 ⭐️⭐️⭐️⭐️⭐️ ⭐️
提升MGR吞吐量 ⭐️⭐️⭐️⭐️⭐️ ⭐️
多寫模式下可能丟數據 ⭐️⭐️⭐️⭐️⭐️ /
單主模式下切主丟數據 ⭐️⭐️⭐️⭐️⭐️ /
MGR集羣啓動效率 ⭐️⭐️⭐️⭐️⭐️ /
集羣節點磁盤滿處理 ⭐️⭐️⭐️⭐️⭐️ /
TCP self-connect問 題 ⭐️⭐️⭐️⭐️⭐️ /

GreatSQL代碼已上傳到gitee上,項目地址 https://gitee.com/GreatSQL/GreatSQL,歡迎圍觀、加星,也歡迎來“找茬”,提patch。

Enjoy GreatSQL :)


文章推薦:



掃碼加入GreatSQL/MGR交流QQ羣



點擊文末“閱讀原文”直達GreatSQL項目主頁

本文分享自微信公衆號 - 老葉茶館(iMySQL_WX)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章