天天看點

MongoDB副本集及C#程式的連接配接配置

1.副本集

高可用是絕大多數資料庫管理系統的核心目标之一。如果要想生産資料在發生故障後依然可用,就需要確定為生産資料庫多部署一台伺服器。MongoDB副本集提供了資料的保護、高可用和災難恢複的機制。

在MongoDB中,有兩種資料備援方式,一種是 Master-Slave 模式(主從複制),一種是 Replica Sets 模式(副本集)。主從複制和副本集使用了相同的複制機制,但是副本集額外增加了自動化災備機制:如果主節點當機,其中一個從節點會自動提升為從節點。除此之外,副本集還提供了其他改進,比如更易于恢複和更複雜地部署拓撲網絡。

叢集中沒有特定的主庫,主庫是選舉産生,如果主庫down了,會再選舉出一台主庫。

MongoDB副本集及C#程式的連接配接配置

可複制集推薦使用的最小配置包含3個節點,因為在可複制集裡如果隻有2個節點,那麼一旦主節點垮掉,就無法進行多數投票表決。在3個成員的可複制集裡可部署包含3個存儲資料的節點伺服器,其節點示意圖如下:

MongoDB副本集及C#程式的連接配接配置

也可以是2個資料存儲伺服器加上一個裁判伺服器,其節點示意圖如下:

MongoDB副本集及C#程式的連接配接配置

(一主一副一仲裁)

目前,作者所在公司建立的叢集大多采用後者架構。

2.MongoDB.Driver

下圖是C#的MongoDB.Driver驅動版本與MongoDB版本支援關系,目前安裝的MongoDB版本都是3.4.4 及以上版本。是以MongoDB.Driver版本應該選用2.4 及以上。

MongoDB副本集及C#程式的連接配接配置

3.連接配接字元串格式

副本集連接配接字元串格式

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

options是連接配接配置中的可選項,replicaSet是其中的一個子項。

下面我們舉一個例子來說明字元串是怎麼配置的,測試環境的副本集資訊如下:

副本集名稱 節點角色 節點IP 端口
repsms 主伺服器 172.177.177.XX1 27017
副本節點 172.177.177.XX2
仲裁節點 172.177.177.XX3

賬号資訊如下:

Username Password DBName
mongousertest testuserpwd mongotestdb

此時C#程式中connectionStr的字元串可以設定如下:

stringconnectionStr = "mongodb://mongousertest:[email protected]:27017,172.177.177.xx2:27017/mongotestdb?replicaSet=reptest";

注意:因為仲裁節點沒有資料副本,仲裁節點也不可能會被選舉為主節點,是以連接配接字元串資訊中不要包含仲裁節點的資訊。

[說明:本文副本集相關圖檔來自網絡,在此感謝原創作者。]