當系統發生故障時,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叢集進行主備切換,可以指定一個唯讀節點為新的主節點。 |