引言
每年一度的雙11購物狂歡節,資料庫自治服務DAS以持續的創新為之保駕護航, 同時也在延續它一次次華美的蛻變。 從最初面向DBA的工具化輔助診斷,到2017年Self-driving Platform理念提出,開始孵化和錘煉資料庫自治能力,2018年DAS自治能力逐漸覆寫集團全網資料庫執行個體,如自動SQL優化、自動空間、自動異常修複等, 2019年11月,為更好服務客戶,混合雲資料庫管理HDM+ CloudDBA+自治能力,正式更新為資料庫自治服務DAS,将鍛煉出來的技術,通過雲這樣的開放平台彙聚起來,不僅服務自己,還可以服務我們的客戶,又一次完成了蛻變。
唯有擔當,才能蛻變出生命的華美。 2020年的雙11,DAS以更加穩定、完備的自治能力,護航範圍兼顧集團和雲上客戶。在集團,依托全網覆寫的資料庫自治能力,自動SQL優化已累計實作超4900萬慢SQL自動優化,自動空間優化累計優化超4.6P,自動異常修複覆寫電商等多場景數十萬執行個體,自動處理異常覆寫超90%,實作“1-5-10”異常自愈能力, 即1分鐘發現,5分鐘定位,10分鐘恢複 ,為雙11大促資料庫穩定性提供了強有力的保障,同時也帶來大量人力投入成本節省。同時,DAS為數十萬的雲上客戶提供了大促全生命周期護航,從大促前的健康巡檢、風險識别、問題修複、SQL優化等,從到大促中的自動SQL限流、自動擴容、護航大盤,到大促後的現場儲存、大促總結,大促期間共産生了上百萬份的巡檢報告、每天進行數百億次異常檢測,為近萬的執行個體提前發現異常、并完成自動修複和優化,實作故障自動消除,幫助客戶平穩度過雙11。
資料庫自治服務DAS
DAS核心理念本身也是來源于過往雙11對資料庫智能化技術趨勢的思考,阿裡擁有業界最富有經驗的DBA,海量的性能診斷資料, 如何把阿裡巴巴豐富資料庫領域知識、經驗、大資料以及機器智能技術結合起來,為資料庫加上“自動駕駛”引擎,在資料庫穩定性、效率、成本上實作最大化。 在雲原生時代,更是如此,應用開發者期望能夠專注于自身的業務創新,而徹底擺脫資料庫運維負擔,讓資料庫高度自治。工業界和學術界在自治資料庫方向達成了高度的一緻,如CMU建立自治資料項目Peloton,旨在實作混合負載下的全自治。資料庫自治服務DAS,就是以資料庫自動駕駛為理念,基于資料驅動、專家經驗和機器學習的智能化驅動,讓資料庫具備自感覺,自恢複,自優化、自安全能力,就如同汽車被賦予自動駕駛能力。

圖: 資料庫自治服務(DAS)核心理念
上圖是資料庫自治服務(DAS)核心理念示意圖, 這些也是它在整個設計、研發、落地過程中,被始終如一地遵循和貫徹的理念:
• 資料驅動,通過海量實時資料收集,如性能名額,負載SQL的請求日志、運維變更日志等等, 以此為基礎,建構探測能力,具備環境、态勢的實時感覺、異常實時發現能力;
• 機器學習和資料庫領域專家經驗的深度融合,可以根據業務場景自己做出決策,具備自我決策能力;
• 自動執行能力,根據自治中心決策,自動進行任務編排,自動完成決策的執行;
最後通過打造閉環能力來實作它們之間的協調, 最終實作自治能力,如從異常發現,到基于根因分析的全局決策,再到修複、優化的決策執行,最後到持續的效果跟蹤評估,回報與復原等,整個閉環,實作了無人工參與的自治場景支援。同時,資料庫自治服務系統自身具備不斷建構自學習能力,例如異常的自動标注、案例系統、異常模拟、量化回報評估等,依托線上業務場景的豐富性積累,沉澱大量案例,以案例為驅動,加速自我進化,不斷提升自治的有效性。
基于以上理念,資料庫自治服務(DAS)已擁有 6大核心自治特性:7 x 24實時異常檢測、故障自愈、自動優化、智能調參、自動彈性、智能壓測。下面逐一展開,并輔以雙11期間的實際案例,來看看它們的具體表現。
DAS核心自治技術
7 x 24實時異常檢測
圖: 7 x 24實時異常檢測
DAS的7X24實時異常檢測通過機器學習算法,實時對資料庫的Workload進行異常檢測,相比傳統基于門檻值的告警方式,能夠更及時的發現資料庫的異常,而不是靠故障驅動。資料名額采集鍊路實作上百項資料庫性能名額、以及負載SQL請求日志等,海量資料的離線上處理與存儲,基于機器學習和資料庫領域預測算法,實作各業務資料庫執行個體的持續模型訓練,結合流式和大資料分析計算架構,進行實時模型預測和實時的異常檢測分析。相比傳統基于規則和基于預值的方式,實時異常檢測具備以下優勢:
• 檢測範圍更廣,例如不僅限監控名額, 還包括SQL、日志、鎖等;
• 實作準實時的檢測,大大超前傳統方式發現異常;
• 基于AI和異常驅動的檢測技術,而非故障驅動的檢測;
• 具備周期性識别能力,自适應業務特征,擁有提前預測能力等
表: 常見Workload 場景時序特征
如上表,現實中常見的workload場景,如毛刺特征、周期性特征、趨勢性特征、均值偏移特征等, 異常檢測服務都能夠準确自動識别,并支援多種時序特征疊加識别,識别出異常後, 會觸發基于根因的全局診斷分析,以及後續的異常恢複、優化自治場景。
故障自愈
通過7 x 24實時異常檢測, 資料庫執行個體異常完成實時檢測發現,DAS自動進行根因分析,自動執行相關止損/修複操作,幫助資料庫自動恢複,減少對企業業務的影響。例如,自動SQL限流就是其中典型自治場景。如下圖是雙11期間自動SQL限流一個實際案例:
圖: 自動SQL限流案例
某自治服務接入執行個體,于2020年11月5日12點31分,活躍會話數和CPU開始驟然飙升,DAS異常檢測中心于12點33分确定此次飙升為一次資料庫異常而非抖動尖刺,觸發SQL自動限流根因診斷,12點34分診斷完成,共發現兩條導緻該次異常的問題SQL,發現問題SQL後随即發起自動限流,活躍會話數開始降低,存量已送出問題SQL執行結束後,活躍會話數開始急速恢複,CPU使用率同時也恢複到正常。整個過程滿足“1-5-10”異常自愈能力, 即1分鐘發現,5分鐘定位,10分鐘恢複。
外置式SQL自動優化
資料庫自治服務(DAS) 基于全局workload和真實的業務場景,持續對資料庫進行SQL Review和優化,就像有一個不知疲倦的專業DBA一直在守護着您的資料庫。
圖: 自動SQL優化中SQL優化診斷
按照經驗,約80%的資料庫性問題可通過SQL優化手段解決,但SQL優化一直以來都是一個非常複雜的過程,需要多方面的資料庫領域專家知識和經驗,另外,由于SQL工作負載不斷變化,SQL優化還是一項非常耗時繁重的任務,這些都決定了SQL優化是一項高門檻,高投入且非常專業的工作。資料庫自治服務(DAS) 基于全局workload和真實的業務場景,持續對資料庫進行SQL Review和優化,就像有一個不知疲倦的專業DBA一直在守護着您的資料庫,将SQL優化推向了更高的境界。同時,DAS的SQL診斷能力本身又有與傳統與衆不同的技術特征,如:
• 它采用外置式的,基于代價模型方式,實作索引、語句改寫推薦,以及性能瓶頸問題識别和推薦,避免傳統規則式的,過于機械化,推薦品質無法保證,無法量化性能提升收益等問題;
• 測試用例形式化特征庫,線上案例的自動回報提取技術,以及阿裡巴巴的應用場景多樣性, 我們建構了足夠覆寫度的;
• 基于全局的Workload優化,基于Workload特征,例如SQL執行頻率,讀寫比等進行優化,最大限度地,消除局部優化的片面性弊端;
下面是雙11期間自動SQL優化一個實際案例:某自治服務接入執行個體, DAS于11月7日通過負載異常檢測到因慢SQL引起的負載異常,自動觸發SQL優化閉環,優化上線後,經過持續24小時優化效果跟蹤完成優化收益評估,優化效果顯著,如優化之前後的平均RT及掃描行數如下圖所示:
圖: 自動SQL優化前平均RT及掃描行數
圖: 自動SQL優化後平均RT及掃描行數
據統計,在優化之前,被優化SQL的平均掃秒行數為148889.198,平均RT為505.561毫秒。而優化之後,平均掃描行數為12.132,大約降為優化前的萬分之一,而平均RT降至0.471毫秒,也大約降低到優化前的千分之一。
自動彈性
雲上資料庫提供基于計算規格的選項以及存儲容量供使用者選擇,當使用者業務Workload規模變化時可适當進行彈性擴縮容,但對于雲原生應用而言,資料庫能夠根據業務Workload的變化自動決定最合适的規格,使用最小的資源完成業務所需的資料庫容量,是使用者所期望的,這也是資料庫“自治”能力的展現。DAS基于AI的時序列預測,能夠自動對資料庫的業務模型、容量水位進行計算和預測,實作及時按需(或先知先覺式)自動擴縮容。
DAS的自動彈性實作了一套完整的資料閉環,包含性能采集、決策中心、算法模型、規格建議子產品、管控執行以及任務跟蹤評估等。性能采集負責對執行個體進行實時性能資料采集,涉及資料庫的多項性能名額資訊、規格配置資訊、執行個體運作會話資訊等;決策中心子產品則會根據目前性能資料、執行個體會話清單資料等資訊進行全局判斷,以基于根因的全局自治,例如可通過SQL限流來解決目前計算資源不足的問題則會采取限流處理;若确實為突增的業務流量,則會繼續進行彈性服務流程;算法模型是整個DAS 自動彈性服務的核心,負責對資料庫執行個體的業務負載異常檢測和容量規格模型推薦進行計算,解決核心的擴容時機、擴容方式、計算規格選擇問題;規格建議校驗将産出具體建議,并針對資料庫執行個體的部署類型和實際運作環境進行适配,并與目前區域的可售賣規格進行二次校驗,確定的建議能夠順利在管控側進行執行;管控執行負責按照産出的規格建議進行分發執行;狀态跟蹤最後用于衡量和跟蹤規格變更前後資料庫執行個體上的性能變化情況。
下面是雙11期間自動SQL優化一個實際案例:
圖: 自動彈性案例
某自治服務接入執行個體,使用者的業務流量不斷上升,執行個體(PolarDB)的CPU使用率不斷飙高并達到了高負載狀态,此時DAS的Autoscaling算法精确的識别出了執行個體目前的異常狀态,于是自動為執行個體增加了兩個隻讀節點,執行個體的CPU使用率成功降到了較低的水位;在維持該狀态兩個小時後,使用者執行個體的流量依然在不斷上升,并第二次觸發DAS的Autoscaling,DAS Autoscaling将執行個體的規格從4核8GB更新到8核16GB,并平穩持續了10多個小時,幫助使用者順利度過了業務高峰期。
智能壓測
圖: 輕量級、個性化的智能壓測
DAS提供的“智能壓測”服務能夠幫助使用者在上雲或在業務大促前評估所需的資料庫規格容量(将在後續章節重點介紹);規格自動擴容AutoScale能力能夠幫助使用者在指定配置的資料庫性能門檻值,或根據DAS内置智能化政策自動動觸發擴縮容動作,進而一定程度上解決了使用者做規格評估和管理的負擔。
傳統的壓測方案大部分基于現有的壓測工具,如sysbench、TPCC等,其最大的問題是這些壓測工具對應的SQL與真實業務差距太大,壓測結果無法準确反映出真實業務的性能和穩定性。DAS提供的智能壓測服務是基于使用者真實業務的workload,是以壓測結果可以直接展現在不同壓力下的性能和穩定性變化。達到該目标,智能壓測需要解決如下挑戰:
• 在不能采集大量SQL的情況,如何提供長時間壓測,如7x24小時穩定性壓測。因為SQL采集需要時間和存儲成本,在給定部分SQL的情況,DAS需要生成滿足業務要求的SQL。
• 并發回放能力。DAS需要保證和真實業務一緻的并發,并能夠提供倍速(如2倍速、10倍速等)和峰值壓測功能。
DAS通過自動學習業務模型,自動生成符合壓測時間的真實業務Workload,同時提供給使用者更豐富的壓測場景,幫助使用者解決大促、資料庫選型等問題。
智能調參
資料庫的參數成百上千,使用者的業務場景多種多樣,靠人肉的方式很難講參數調整為最優的配置,通過基于機器學習技術,和智能壓測相結合,可以為每個資料庫執行個體的自動推薦最優的參數模版。雲上常用資料庫如MySQL、PolarDB配置參數多達幾百個,同時每個參數的範圍從幾十到幾萬,甚至幾十萬不等。配置參數的過程相當于從巨大的多元空間中搜尋出滿足目标(如提升TPS,或降低latency)的參數值。DBA通常是通過經驗,或者直接使用預設參數值設定配置。然而,不同workload,不同硬體對應的參數都會發生變化,就算有經驗的DBA也無法保證對參數配置的有效性,雲上大量的中小企業甚至沒有專門的運維人員,對于最優參數基本無法設定和調整。是以,資料庫參數設定存在如下挑戰:
• 參數組合空間巨大,全部周遊為NP-hard
• 調參依賴經驗,無法保證參數的有效性
• 雲上Workload存在多樣性,不同Workload的參數不同
• 硬體(規格)異構,不同硬體規格下,對應的參數不同
圖: 智能調參系統示意圖
圖: 智能調參算法
DAS通過高效的機器學習手段,将調參看做黑盒優化問題,進行疊代學習,對于不同Workload的TPS提升有15%-55%,整個過程能在3-5個小時約100個疊代步内完成。基于阿裡巴巴集團内部豐富的Workload和硬體基礎設施,離線學習出不同種類workload和硬體規格的特征和參數,再通過偏序關系的比對和Meta Learning,線上拟合出适配給定目标workload的模型,通過少量疊代便可以快速學習出目标workload的參數值,可以在縮短到1個小時以内約10-30步以内找出理想的參數。
結束語
通過資料庫自治服務DAS,可以幫助企業節省90%的資料庫管理成本,降低80%的運維風險,讓使用者可以更集中在業務創新,讓業務持續行駛在快車道上。在阿裡,我們以十一年為一個輪回思考雙 11,今年是雙 11 新輪回的起點。資料庫自治服務DAS跟随着它、護航着它,基于創新的蛻變将持續延續。
了解更多詳情可點選:
https://www.aliyun.com/product/hdm