全部產品
Search
文件中心

ApsaraDB for MongoDB:如何串連複本集執行個體實現讀寫分離和高可用

更新時間:Jun 19, 2024

MongoDB複本集執行個體通過多個資料副本來保證資料的高可靠,通過自動的主備切換機制來保證服務的高可用。需要注意的是,您需要使用正確的方法串連複本集執行個體來保障高可用,您也可以通過設定來實現讀寫分離。

使用前須知

  • 複本集執行個體的Primary節點不是固定的。當遇到複本集輪轉升級、Primary節點宕機、網路磁碟分割等情境時可能會觸發主備切換,複本集可能會選舉一個新的Primary節點,原先的Primary節點會降級為Secondary節點。

  • 若使用Primary節點的地址直接連接Primary節點,所有的讀寫操作均在Primary節點完成,造成該節點壓力較大,且一旦複本集發生主備切換,您串連的Primary會降級為Secondary,您將無法繼續執行寫操作,將嚴重影響到您的業務使用。

Connection String串連說明

要正確串連複本集執行個體,您需要先瞭解下MongoDB的Connection String URI,所有官方的driver都支援以Connection String的方式來串連MongoDB。

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

參數說明:

  • mongodb:// :首碼,代表這是一個Connection String。

  • username:password@:登入資料庫的使用者和密碼資訊,如果啟用了鑒權,需要指定密碼。

  • hostX:portX:複本集成員的IP地址:連接埠資訊,多個成員以英文逗號(“,”)分割。

  • /database:要訪問的資料庫名稱,預設為admin。

  • ?options:指定額外的串連選項。

    常見的額外選項為authSource=<authenticationDatabase>,該參數用於指定資料庫帳號所屬的資料庫。<authenticationDatabase>為鑒權資料庫名稱。資料庫帳號必須在所屬的資料庫下進行鑒權,才能鑒權成功。如果不配置該參數,<database>會作為鑒權資料庫。

說明

關於Connection String的更多資訊,請參見Connection String URI

複本集執行個體Connection String URI串連樣本

ApsaraDB for MongoDB提供了Connection String URI串連方式。

  1. 擷取複本集執行個體Connection String URI串連資訊,詳情請參見複本集執行個體串連說明

  2. 應用程式設定使用Connection String URI來串連執行個體,詳情請參見程式碼串連執行個體

    說明

    要實現讀寫分離,需要在Connection String URI的options裡添加readPreference=secondaryPreferred,設定讀請求為Secondary節點優先。更多讀選項,請參見Read preferences

    樣本:

    資料庫帳號為test,所屬資料庫為admin。

    mongodb://test:****@dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717,dds-bp19f409d7512****.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-6108****&readPreference=secondaryPreferred

通過上述Connection String來串連MongoDB複本集執行個體,讀請求將優先發給Secondary節點實現讀寫分離。同時用戶端會自動檢測節點的主備關係,當主備關係發生變化時,自動將寫操作切換到新的Primary節點上,以保證服務的高可用。