欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MongoDB副本集及C#程序的连接配置

程序员文章站 2022-08-17 17:26:22
1.副本集 高可用是绝大多数数据库管理系统的核心目标之一。如果要想生产数据在发生故障后依然可用,就需要确保为生产数据库多部署一台服务器。MongoDB副本集提供了数据的保护、高可用和灾难恢复的机制。 在MongoDB中,有两种数据冗余方式,一种是 Master-Slave 模式(主从复制),一种是 ......

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

27017

仲裁节点

172.177.177.xx3

27017

 

 

 

 

 

 

 

 

 

 

账号信息如下:

username

password

dbname

mongousertest

testuserpwd

mongotestdb

 

 

 

 

 

此时c#程序中connectionstr的字符串可以设置如下:

stringconnectionstr = "mongodb://mongousertest:testuserpwd@172.177.177.xx1:27017,172.177.177.xx2:27017/mongotestdb?replicaset=reptest";

注意:因为仲裁节点没有数据副本,仲裁节点也不可能会被选举为主节点,所以连接字符串信息中不要包含仲裁节点的信息。

 

[说明:本文副本集相关图片来自网络,在此感谢原创作者。]