全部產品
Search
文件中心

ApsaraDB for MongoDB:主備切換

更新時間:May 17, 2025

本文介紹ApsaraDB for MongoDB主備切換相關問題。

為什麼執行個體會發生主備切換?

ApsaraDB for MongoDB執行個體發生主備切換的常見原因如下:

  • 人工操作:您或者您授權的阿里雲技術專家手動發起的主備切換。

  • 風險隱患:阿里雲檢測到執行個體存在潛在風險,此類風險可能會影響執行個體的正常使用。系統會自動下發主動營運任務來處理此類風險項,並在可維護時間段觸發主備切換,替換掉存在風險的節點。

    您可以在歷史事件中查詢已處理的營運任務,也可以在計劃內事件中管理待處理的營運任務。

  • 宿主機下線:ApsaraDB for MongoDB執行個體中節點所在的機器出現異常,可能會影響執行個體的正常使用。系統會將機器進行下線處理,並觸發主備切換,替換掉存在風險的節點。

  • 執行個體異常:阿里雲檢測到執行個體發生故障,無法正常使用時,系統會立即觸發主備切換,及時恢複執行個體,縮短故障影響時間長度。

宿主機下線或執行個體異常導致的主備切換會以站內信或郵件等形式通知到您,通知內容如下:

【阿里雲】尊敬的****:您的ApsaraDB for MongoDB執行個體:dds-bp****(名稱:****)出現異常,高可用系統已經觸發切換,確保執行個體穩定運行。請檢查程式串連是否正常,建議設定自動重連機制以避免切換影響。

主備切換有什麼影響?

影響:

  • 主備切換過程中,會出現1次閃斷現象,期間約30秒。

  • 如果您的業務通過Primary節點的地址串連,那麼由於節點角色發生變化,可能會對業務的讀寫操作造成影響,例如無法寫入資料。

業務部署建議:

  • 請提前為業務設計重連機制和異常處理能力,串連閃斷後可自動重連,保障業務穩定運行。

  • 推薦生產環境的應用程式通過ConnectionStringURI SRV或ConnectionStringURI地址串連資料庫。當某個節點出現故障時,不會因為主備切換而影響應用的讀寫操作,更多資訊,請參見複本集執行個體串連說明分區叢集執行個體串連說明

如何手動設定主備切換?

ApsaraDB for MongoDB支援手動設定主備切換,方便您進行即時容災演練,驗證用戶端程式的異常處理能力。如果執行個體部署在多可用性區域,您還可以根據業務的部署情況設定主備切換,滿足應用就近串連的需求。

為什麼複本集執行個體寫入資料報錯?

問題描述

寫入資料至ApsaraDB for MongoDB複本集執行個體時,出現"errmsg": "not master", "code": 10107, "codeName": "NotMaster""errmsg": "not master", "code": 10107, "codeName": "NotWritablePrimary"Time out after 30000ms while waiting for a server that matches writableServerSelector.報錯。

常見原因

複本集執行個體發生了主備切換,導致節點角色發生變化。如果您的業務通過主節點(Primary節點)的地址串連,主備切換後實際串連的節點角色變成了從節點(Secondary節點),所以寫入失敗。

解決方案

  • 手動切換節點角色,將業務實際串連的單節點地址對應節點切換為主節點。

  • 推薦生產環境的應用程式通過ConnectionStringURI SRV或ConnectionStringURI地址串連資料庫。當某個節點出現故障時,不會因為主備切換而影響應用的讀寫操作,更多資訊,請參見複本集執行個體串連說明

  • 請為業務設計重連機制和異常處理能力,串連閃斷後可自動重連,保障業務穩定運行。