一般情況下,因主節點故障或過載導致唯讀節點複製異常時,通過代理訪問的整個叢集將不可讀不可寫,但叢集內的唯讀節點依然可提供讀服務。您可以在資料庫代理中設定最小保留執行個體數,在主節點故障或過載時保留指定數量的唯讀節點處理讀請求,提高執行個體在異常情況下的可用性。
功能簡介
通過設定最小保留執行個體數,叢集在異常情況下(如主節點異常宕機或唯讀節點複製中斷)可保留指定數量的唯讀節點處理讀請求。使用者佈建最小保留執行個體數後,資料庫代理內至少會有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表示節點正常參與路由。
前提條件
已開通資料庫代理,且代理的核心版本不低於2.9.5。具體操作,請參見開通資料庫代理。
注意事項
設定了最小保留執行個體數後,流量可能會路由至超過最大延遲閾值的唯讀節點。
最小保留執行個體數對於讀寫入模式和唯讀模式都適用。
操作步驟
訪問RDS執行個體列表,在上方選擇地區,然後單擊目標執行個體ID。
在左側導覽列,單擊資料庫代理。
在串連資訊地區,在目標代理串連地址的操作列,單擊修改配置。
在彈出的對話方塊中,填寫最小保留執行個體數,並單擊確定。
相關API
API | 描述 |
查詢RDS執行個體資料庫代理詳細資料。 | |
查詢RDS執行個體資料庫代理的串連地址資訊。 | |
修改RDS執行個體資料庫代理串連地址存取原則。 |