當系統發生故障時,PolarDB集群會自動進行主備節點切換。您也可以手動進行主備切換,指定一個只讀節點為新的主節點。
注意事項
不論是自動切換還是手動切換,當只讀節點未開啟熱備時,主備切換過程中可能會出現約20~30秒的閃斷,因此在切換前請務必確保應用具備重連機制。當只讀節點開啟了熱備功能時,主備切換將在5~10秒內完成。關于如何開啟只讀節點的熱備功能,請參見設置熱備節點。
在某些極端場景下,主備切換過程中的閃斷時間可能會增加,但不會超過3分鐘。
自動主備切換
PolarDB集群版采用雙活(Active-Active)的高可用集群架構。當系統發生故障時,可讀寫的主節點和只讀節點之間會自動進行故障切換(Failover),系統自動選舉新的主節點。
集群中每個節點都有一個故障切換(Failover)優先級,該優先級決定了故障切換時每個節點被選舉為主節點的概率高低。當多個節點的優先級相同時,則有相同的概率被選舉為主節點。
自動選舉主節點按以下步驟進行:
系統找出當前可以被選舉的所有只讀節點。
選擇優先級最高的一個或多個只讀節點。
如果切換第一個節點失敗(例如,網絡原因、復制狀態異常等),則會嘗試切換下一個,直至成功。
您可在集群基本信息頁面的數據庫節點區域,查看并設置集群中每個節點的Failover優先級。
當只讀節點未開啟熱備功能時,主備切換過程中可能會出現約20~30秒的閃斷,因此切換前請務必確保應用具備重連機制。
當只讀節點開啟熱備功能時,主備切換將在5~10秒內完成。
在某些極端場景下,主備切換過程中的閃斷時間可能會增加,但不會超過3分鐘。
手動主備切換
您也可以手動進行主備切換,指定一個只讀節點為新的主節點。手動切換適用于高可用演練,或者需要指定某個節點為主節點的場景。
登錄PolarDB控制臺。
在左上角,選擇集群所在地域。
找到目標集群,單擊集群ID。
在基本信息頁面的數據庫節點區域,單擊右上角圖標切換視圖。
單擊主備切換。
在彈出的對話框中,選擇新主節點,單擊確定,開始切換。
說明如果新主節點為未開啟熱備功能的只讀節點,切換過程中可能會出現約20~30秒的閃斷,因此切換前請務必確保應用具備重連機制。
如果新主節點為開啟熱備功能的只讀節點,主備切換將在5~10秒內完成。
在某些極端場景下,主備切換過程中的閃斷時間可能會增加,但不會超過3分鐘。
常見問題
Q:主備切換后,超過十分鐘,集群狀態仍未恢復運行中,可能是什么原因?如何處理?
A:在發生異常觸發高可用切換時,應用端長連接可能無法感知到連接狀態變化,如果沒有設置socket超時時間,應用程序會一直等待數據庫返回結果,通常會等到幾百秒后才會斷連,期間數據庫的部分連接無法正常工作,SQL會出現大量執行異常。
為了避免無效連接,建議合理配置MySQL驅動庫的connectTimeout和socketTimeout參數,防止出現網絡錯誤時一直等待的情況,從而縮短故障時間。
這兩個參數的值需要根據業務負載和使用方式進行評估。在線事務場景中,參數建議值如下:
connectTimeout:建議配置為1~2秒。
socketTimeout:若為內網環境,建議配置為10~15秒;若為公網環境,建議配置為60~90秒。
說明以上建議配置僅供參考。
相關API
API | 描述 |
手動對PolarDB集群進行主備切換,可以指定一個只讀節點為新的主節點。 |