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串連方式。
擷取複本集執行個體Connection String URI串連資訊,詳情請參見複本集執行個體串連說明。
應用程式設定使用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節點上,以保證服務的高可用。