1. 程式人生 > >MongoDB副本集及C#程式的連線配置

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

1.副本集

高可用是絕大多數資料庫管理系統的核心目標之一。如果要想生產資料在發生故障後依然可用,就需要確保為生產資料庫多部署一臺伺服器。MongoDB副本集提供了資料的保護、高可用和災難恢復的機制。 在MongoDB中,有兩種資料冗餘方式,一種是 Master-Slave 模式(主從複製),一種是 Replica Sets 模式(副本集)。主從複製和副本集使用了相同的複製機制,但是副本集額外增加了自動化災備機制:如果主節點宕機,其中一個從節點會自動提升為從節點。除此之外,副本集還提供了其他改進,比如更易於恢復和更復雜地部署拓撲網路。

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

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

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

(一主一副一仲裁)

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

2.MongoDB.Driver

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

3.連線字串格式

副本集連線字串格式

mongodb://username:[email protected]:port1,host2:port2[,...,hostN:portN]/database?options

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

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

副本集名稱

節點角色

節點IP

repsms

主伺服器

172.177.177.XX1

27017

副本節點

172.177.177.XX2

27017

仲裁節點

172.177.177.XX3

27017

賬號資訊如下:

Username

Password

DBName

mongousertest

testuserpwd

mongotestdb

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

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

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

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