一般情況下,因主節點故障或過載導致唯讀節點複製異常時,通過代理訪問的整個叢集將不可讀不可寫,但叢集內的唯讀節點依然可提供讀服務。您可以在資料庫代理中設定最小保留執行個體數,在主節點故障或過載時保留指定數量的唯讀節點處理讀請求,提高執行個體在異常情況下的可用性。
上線時間
2024年11月26日
功能簡介
通過設定最小保留執行個體數,叢集在異常情況下(如主節點異常宕機或唯讀節點複製中斷)可保留指定數量的唯讀節點處理讀請求。使用者佈建最小保留執行個體數後,資料庫代理內至少會有min{最小保留執行個體數,正常運行且權重非0的唯讀節點個數}個唯讀節點提供服務。
唯讀節點正常運行指節點的運行狀態為運行中,對其複製狀態無要求。
使用情境
最小保留執行個體數主要用於以下兩種情境:
主節點異常宕機導致唯讀節點複製中斷。
可設定通過最小保留執行個體數,使Proxy 位址依然能提供讀能力。
主節點寫入量大,導致唯讀節點的複寫延遲超過最大延遲閾值,從而影響負載平衡。
當主節點寫入量大導致唯讀節點的複寫延遲超過最大延遲閾值時,所有讀流量將被轉寄至主節點,可能使其過載甚至掛起。若設定最小保留執行個體數,保留的唯讀節點將分擔讀流量,防止主節點因CPU負載過高而掛起。
節點保留原則
當可被路由的唯讀節點數量低於預設的最小保留執行個體數時,系統將按以下策略保留唯讀節點:
當前已被路由的唯讀節點依然保留,額外優先保留複寫延遲高於最大延遲閾值(未複製中斷)的節點,若此類節點不足,再保留複製中斷的節點,直到達到最小保留執行個體數。
在滿足上述優先順序的情況下,若節點複製狀態相同,則按節點讀權重排序,優先保留讀權重高的節點。
設定最小保留執行個體數後,複寫延遲超過最大延遲閾值的節點也可被路由,但讀權重為0的節點不可被路由。
您可以通過下表中的樣本情境更直觀地理解節點保留原則:
複製狀態不同時的節點保留樣本
情境
最小保留執行個體數
最大延遲閾值
RO1(複寫延遲)
RO2(複寫延遲)
RO3(複寫延遲)
代理是否可讀
可讀節點
1
1
-1
-1
-1
-1
是
RO1
2
-1
50
60
是
RO2
3
1
30
0
40
40
是
RO1
4
40
50
60
是
RO1
5
-1
-1
-1
是
RO1
6
-1
50
60
是
RO2
7
2
30
20
60
40
是
RO1,RO2
8
20
-1
60
是
RO1,RO3
9
20
-1
-1
是
RO1,RO2
說明複寫延遲為
-1時表示節點複製中斷,0表示無複寫延遲,大於0表示有複寫延遲但未複製中斷,RO表示唯讀節點。複製狀態相同(讀權重不同)時的節點保留樣本
情境
最小保留執行個體數
RO1(節點權重)
RO2(節點權重)
RO3(節點權重)
是否可讀
可讀節點
10
2
0
20
0
是
RO2
11
0
0
0
否
無
12
0
20
20
是
RO2,RO3
說明讀權重為
0時表示節點不參與路由,大於0表示節點正常參與路由。
如何使用
開通資料庫代理,設定資料庫代理配置,填寫最小保留執行個體數。詳情請參見設定最小保留執行個體數。