演講內容 摘要:GaussDB(for MySQL)是華為自研雲原生資料庫,具有高性能,高擴展,高可靠的特點,完全相容MySQL協議,自研架構和友好的生態相容性,可以同時滿足資料庫管理員、應用開發者、CTO的運維、使用和業務發展需求,本次主要介紹GaussDB(for MySQL)在雲原生技術方向上 ...
演講內容
摘要:GaussDB(for MySQL)是華為自研雲原生資料庫,具有高性能,高擴展,高可靠的特點,完全相容MySQL協議,自研架構和友好的生態相容性,可以同時滿足資料庫管理員、應用開發者、CTO的運維、使用和業務發展需求,本次主要介紹GaussDB(for MySQL)在雲原生技術方向上遇到的挑戰和未來的發展演進路徑。
在2023雲資料庫技術沙龍 “MySQL x ClickHouse” 專場上,華為雲資料庫高級產品經理周家恩,為大家分享一下《GaussDB(for MySQL)雲原生資料庫技術演進和挑戰》的一些技術內容。
分享嘉賓
周家恩,華為雲資料庫高級產品經理,10年以上資料庫技術運維,產品管理經驗,先後在多家TOP雲廠商任職產品經理,熟悉MySQL,SQL Server等多款資料庫管理,維護以及商業運營工作,現任華為雲資料庫高級產品經理,負責原生資料庫GaussDB(for MySQL)產品管理和設計,運營工作。
本文內容根據演講錄音以及PPT整理而成。
GaussDB(for MySQL)雲原生技術的演進和挑戰
大家好,先讓我自我介紹一下。目前我在華雲資料庫團隊擔任資料庫產品經理,主要負責MySQL領域的產品規劃。今天我帶來的主題是《GaussDB(for MySQL)雲原生技術的演進和挑戰》。
華為資料庫的發展歷程
讓我們先來看一下華為資料庫的發展歷程。可能在許多人的眼中,華為是以硬體起家的公司。但實際上,華為資料庫的發展已經開始了十幾年,起步非常早。在雲這塊的話有幾個階段,我們主要分成兩條線:開源和雲原生資料庫。
開源方面,我們涉及到的是RDS和MySQL。而對於雲托管,我們早在2014年15年左右就開始了內部業務的使用。此外,我們還推出了雲原生資料庫,其中包括雲原生MySQL。亞馬遜在2014年推出後,很多雲廠商都不斷地在借鑒和學習。在2018年和2019年,我們發佈了第一個商用版本。
在我們看來,雲原生資料庫與存儲的可用性、可靠性和性能密切相關。華為的企業級存儲在中國市場擁有非常不錯的市場占有率,因此我們將雲原生資料庫與華為的企業級存儲緊密融合。隨著架構和技術的不斷演進,我們在2019年推出的商用版本,這就是我們華為資料庫發展的歷程。
GaussDB(for MySQL)的系統架構
讓我們來瞭解一下GaussDB(for MySQL)的系統架構。GaussDB(for MySQL)是一款基於存算分離架構的雲原生資料庫,完全相容MySQL協議,並由華為自主研發的分散式存儲系統作為底層支撐。它採用active架構,相比傳統開源架構,不需要備庫進行數據同步,從而節省了用戶的成本。最關鍵的一點是,GaussDB(for MySQL)採用日誌即數據架構,這一架構最早由亞馬遜的Aurora推出。該架構的優勢在於優化了MySQL事務提交路徑,從而顯著提升了整個事務提交的性能。
高性能
讓我們先來瞭解一下我們在性能方面做了哪些工作。通常來說,雲原生資料庫在性能方面領先於傳統架構。我們經過實測發現,在寫入性能方面,我們的性能是開源架構的七倍。這主要歸功於我們的架構設計。
我們採用了存算分離架構,不同廠商的設計會有所不同,但我們的設計與亞馬遜的Aurora比較相似,可以說華為的架構與亞馬遜最接近。我們採用了日誌即數據架構,即在整個事務寫入時,我們會直接進行REDO落盤即事務提交,不需要再從計算節點刷臟頁到磁碟,從而大幅減少了整個事務提交的網路負載和開銷。因此,我們的寫入性能比開源架構和沒有採用這種架構的廠商都要高。
本次活動中我們主要討論MySQL x ClickHouse,在TPCH領域,我們也做了很多優化工作,並開發了並行查詢技術,從而在性能方面取得了很大的提升。下麵看一下我們在性能這塊做了一些優化。
並行查詢
就並行查詢而言,目前我們在TPCH的22個SQL中的整體性能提升可以達到26倍。華為在並行查詢方面所做的一些工作與其他廠商也稍有不同。
近數據處理NDP
就目前在雲原生資料庫領域比較大的幾家友商來說,例如Aurora,在並行查詢這個方面,它是通過將運算元下推到存儲引擎上來實現的。而亞馬遜並不是在SQL引擎這一層面進行並行操作,它主要是充分利用了其分散式存儲來提升性能。而像國內其他友商,則主要是在SQL引擎層面進行並行操作。
其實我們做了兩個方面的工作。一方面,在SQL引擎層面,我們實現了並行操作,就像上一頁所講的那樣。另一方面,我們還實現了NDP運算元下推,充分利用了分散式存儲的性能,將底層存儲資源充分利用起來。我們對複雜的運算元、Filter、Projection、謂詞包括比較運算等進行了下推優化,同時也對快速列和虛擬列進行了下推。因此,在複雜查詢方面,我們稱之為“雙輪驅動”,這也是我們與其他廠商不同的地方。接下來,看下實際的性能表現。
NDP在TPCH場景最高節省率超過90倍
這個就是開啟NDP在TPCH場景下的一個性能表現。開啟以後,最高場景是可以就是計算到網路之間的開銷。開源的MySQL在進行大的複雜查詢時,我們需要將數據從磁碟傳輸到計算層進行計算,會有大量網路開銷,而通過運算元下推技術,TPCH處理多個SQL時,我們看到網路開銷的最高節省率超過90倍。在性能方面,我們測試了NDP+PQ場景,該技術品牌被稱為NDPQ。性能表現最高提升高達30倍以上。
跨AZ部署高可用,數據安全可靠
在可用性方面,我們的DFV支持跨AZ能力。目前,華為雲國內的主力region包括上海、北京、廣州、貴陽、烏蘭察布等都支持3AZ部署。未來,3AZ部署也將成為華為雲GaussDB(for MySQL)的預設架構。今年我們正在開通的節點中,包括香港、曼谷以及拉美、中東等地區。在歐洲,我們與德國電信和法國電信合作,推動GaussDB(for MySQL)全球化進程。我們的跨AZ能力可以實現RPO=0,保證數據的高可靠性。
自動彈性擴展
關於擴展性,我們知道在雲上使用MySQL資料庫,它更適合互聯網業務,尤其是互聯網、游戲和電商等用戶。當然,現在政企客戶也越來越多地上雲,我們也為此做了節點的自動擴展,以滿足更多不同類型客戶的需求。目前,我個人覺得現在雲有一個非常重要的的趨勢發展,其中一個關鍵的趨勢是HTAP。另外,Serverless也是一個重要的趨勢。我們可以看到,像亞馬遜去年的invent大會上最核心的發佈之一,就是所有資料庫開始向是Serverless化發展。
在雲上除非技術實力特別強之外,用戶最關註的問題就是成本。因此,我們提供了一種類似於Serverless的服務,支持按需自動彈性擴展。這是我們早期推出的一個雛形,其中包括自動彈性擴展周期和按需模式。由於採用了存算分離架構,加節點的彈性過程非常快速,一般只需要五到十分鐘即可完成。因此,它的速度比傳統的MySQL快得多。傳統的MySQL在數據量不斷增加時,進行規格變更和加節點所需的時間非常長。
秒級快照備份
在備份方面,我們的存儲採用基於AppendOnly模式的DFV存儲。我們實現了秒級快照,這是我們自己開發的快照系統。我們進行了測算,發現大約1TB的數據備份恢復只需要三四十分鐘即可完成。
我們還將在今年年底推出backtrack功能,該功能基於存儲的多版本特性,用戶可以在選擇的時間點範圍內進行回溯操作,往前或往後。我們可以將1TB數據這個級別的回溯時間控制在五分鐘以內。
資料庫代理實現自動讀寫分離
再看資料庫代理服務,我們目前支持用戶按需購買服務。預設情況下,我們不提供代理服務。如果用戶有需求,可以按需購買讀寫分離服務,無需對其業務進行任何改動即可自動實現讀寫分離。
我們今年對讀寫分離進行了大量的優化,其中包括基於負載均衡模式的支持,我們還根據業務特征,支持用戶選擇最終一致性、會話一致性和全局一致性三種一致性級別。
我們的代理服務支持只讀模式和讀寫模式。如果用戶需要在分析型業務和交易型業務之間進行物理隔離,可以選擇只讀模式。在只讀模式下,代理服務會為用戶創建不同的只讀節點,從而實現對分析業務和交易業務的物理隔離。
HTAP只讀分析節點
接下來介紹我們的HTAP只讀分析節點。這是我們在HTAP領域中不斷推進的一步。正如我之前所述,我們在複雜查詢方面採用了並行查詢和運算元下推等技術。然而這些還不足以滿足所有用戶的需求,因為這2個技術本質上仍在同一份數據上進行操作,也就是說還是在整個一套系統裡面。
因為大家都知道,在做TPCH這樣的場景時,對整個資源的消耗是不可控的。一個分析業務可能會影響到交易型業務。為瞭解決這個問題,我們開發了只讀分析節點,它基於ClickHouse實現。通過CDC模式,我們可以將用戶交易數據從GaussDB(for MySQL)同步到ClickHouse。正如之前的嘉賓所介紹的,我們也是採用了基於binlog的方案。
我們目前還處於公測階段,主要服務於華為內部的終端消費者,例如華為手機、手環和運動健康等業務。這些業務的一部分分析業務已經遷移至我們的只讀分析節點上。
並行創建索引,提升性能六到七倍
關於並行創建索引,我們都知道社區版的MySQL在創建索引時是單線程操作,無法實現多線程。因此,如果要創建一個較大的索引,耗時會非常高。為瞭解決這個問題,我們開發了多線程的索引創建功能,多線程被設計用於從存儲讀取數據、排序以及創建索引等操作。經過測試,該功能相比於開源版本的MySQL,可以提升性能六到七倍。
Serverless領域技術實踐
在我們後續產品的演進中,Serverless將是一個非常關鍵的方向。我們計劃在今年上半年(五六月份)進行Serverless的公測,下半年則會正式商用。在Serverless領域,我們已經做了很多探索。目前業內最為出色的Serverless產品是亞馬遜的Serverless V2。雖然亞馬遜在最初推出的Serverless V1已經引起了不少關註,但它仍存在某些局限性,例如擴縮的粒度和速度可能不夠理想。但是隨著Serverless V2的推出,它的擴縮粒度可以達到0.5 ACU,而且端到端的感知速度只需十秒鐘。因此,當時的亞馬遜Serverless V2可以說是引領了整個雲原生資料庫Serverless的發展趨勢。
我們還在技術方面進行了很多創新。其中,我們實現了快速彈性的緩衝池(buffer pool),併在內核層面對其進行了加速。通過這一技術,我們可以實現毫秒級的擴展,從而在端到端的運行過程中,經過內部環境測試後,可在大約十秒鐘內(甚至可能更快,大約八秒左右)完成。
我們還探索了一些技術,例如ALT應用透明遷移。在Serverless領域,跨機操作是一個關鍵點。在單機內,我們可以相對簡單地實現彈性伸縮,但是在雲上,我們需要考慮如何跨多台物理機運營,如何擴大資源池規模。這帶來的問題是資源池水位可能會比較高,在擴展過程中可能會出現資源不足的情況,這時我們需要跨機操作,因此保證遷移的平穩性和不中斷就顯得尤為重要。我們實現了ALT應用透明遷移技術,通過事務狀態保持等方式,實現了平穩遷移。
在Serverless領域,我們已經實現了按需付費的存儲,計算層計劃在今年五六月份推出,而Serverless代理層預計會在今年年底推出。
保險公司客戶案例
最後再看一下我們的幾個案例,其中第一個種子用戶是國內比較大的保險公司。他之前使用的是Oracle,但由於國產化的需求和去O的需求,他們選擇了我們的服務。由於我們的服務可以部署在公有雲上,我們通過一些專家服務和相關工具對該公司業務進行評估,並將其遷移到GaussDB(for MySQL)。遷移完成後,該公司的TCO降低了50%。
華為終端案例
我們的另一個案例是華為終端。整個業務規模非常大,涵蓋了華為整個手機業務、汽車業務以及應用商店等實例,實例數量可以達到非常大的規模。以前,由於線下的自建資料庫存在許多痛點,他們有一個龐大的DBA團隊來維護。經常面臨可用性和運維相關的問題,以及如果發生切換,可能會面臨數據丟失的情況。
遷移到GaussDB(for MySQL)後,他們面臨的問題像數據丟失就已經不存在了。此外,我們不斷演進,擴展了自動彈性伸縮等特性。讓用戶的成本降低了40%左右。同時,他們以前使用了商業的分析型資料庫軟體,也開始逐步使用我們的HTAP分析只讀節點,這進一步降低了整體的成本。
本次大會圍繞“技術進化,讓數據更智能”為主題,匯聚位元組跳動、阿裡雲、玖章算術、華為雲、騰訊雲、百度的6位資料庫領域專家,深入 MySQL x ClickHouse 的實踐經驗和技術趨勢,結合企業級的真實場景落地案例,與廣大技術愛好者一起交流分享。