本文介紹了過載保護功能的原理和使用方法。
背景
在促銷活動等高並發情境下,資料庫主節點的CPU資源容易出現負載過高的情況。為應對這一狀況,通常需要對資料庫進行變更配置(升級)。然而,在規格變更過程中可能會出現閃斷或效能跌至0的情況,此時所有請求可能會被路由至主節點,從而導致主節點的CPU資源超負載,進而影響業務的連續性和穩定性。為了緩解此種情況的發生,PolarDB MySQL版在資料庫代理層引入了過載保護功能。該功能能夠在所有隻讀節點異常時,通過限制並發請求的數量來保護主節點,確保其不會因過載而影響整體服務的可用性。
使用限制
該功能要求資料庫代理的版本為2.8.1或以上,支援PolarDB MySQL版 5.6,5.7,8.0。
該功能當前只支援可讀可寫類型的Endpoint。
當前只有在所有隻讀節點異常(宕機或者與主庫的複製中斷)的情況下,才會觸發過載保護,其它情境暫時未支援。
使用說明
在控制台基本資料的叢集地址地區,單擊編輯配置,開啟編輯地址配置頁面,可開啟過載保護。
基於漏桶原理,當代理端檢測到叢集中的所有RO節點均異常時,開始主動對叢集的並發請求進行限制以達到保護主庫的目的。當RO節點正常或者超出限制時間後(預設60s),取消限制。
對於限流的上限,PolarDB MySQL版叢集是通過歷史資料來選取合適的區間。在叢集正常服務期間,代理會記錄該執行個體主節點最近24小時的採樣並發請求數。
當觸發過載保護後,目前代理會使用歷史資料的中位元作為上限對使用者的活躍串連數進行限流。
樣本
測試過程中所有隻讀節點複製中斷,進入過載保護。在這期間流量還可以持續進來,但是不會進一步飆升。
在唯讀節點恢複後,過載保護結束,流量可以正常進行轉寄。